From: Thomas Gleixner <tglx@linutronix.de>
To: "Reshetova, Elena" <elena.reshetova@intel.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>,
"Williams, Dan J" <dan.j.williams@intel.com>,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Peter Zijlstra <peterz@infradead.org>,
"Lutomirski, Andy" <luto@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Richard Henderson <rth@twiddle.net>,
Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
James E J Bottomley <James.Bottomley@hansenpartnership.com>,
Helge Deller <deller@gmx.de>,
"David S . Miller" <davem@davemloft.net>,
Arnd Bergmann <arnd@arndb.de>, Jonathan Corbet <corbet@lwn.net>,
Paolo Bonzini <pbonzini@redhat.com>,
David Hildenbrand <david@redhat.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Peter H Anvin <hpa@zytor.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
"Luck, Tony" <tony.luck@intel.com>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>,
Sean Christopherson <seanjc@google.com>,
Kuppuswamy Sathyanarayanan <knsathya@kernel.org>,
X86 ML <x86@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux PCI <linux-pci@vger.kernel.org>,
"linux-alpha@vger.kernel.org" <linux-alpha@vger.kernel.org>,
"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
"linux-parisc@vger.kernel.org" <linux-parisc@vger.kernel.org>,
"sparclinux@vger.kernel.org" <sparclinux@vger.kernel.org>,
linux-arch <linux-arch@vger.kernel.org>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>
Subject: RE: [PATCH v5 12/16] PCI: Add pci_iomap_host_shared(), pci_iomap_host_shared_range()
Date: Sun, 17 Oct 2021 23:52:42 +0200 [thread overview]
Message-ID: <87r1cj2uad.ffs@tglx> (raw)
In-Reply-To: <DM8PR11MB5750A40FAA6AFF6A29CF70DAE7B89@DM8PR11MB5750.namprd11.prod.outlook.com>
Elena,
On Thu, Oct 14 2021 at 06:32, Elena Reshetova wrote:
>> On Tue, Oct 12, 2021 at 06:36:16PM +0000, Reshetova, Elena wrote:
> It does not make any difference really for the content of the /drivers/*:
> gives 408 __init style functions doing IO (.probe & builtin/module_
>> > _platform_driver_probe excluded) for 5.15 with allmodconfig:
>
> ['doc200x_ident_chip',
> 'doc_probe', 'doc2001_init', 'mtd_speedtest_init',
> 'mtd_nandbiterrs_init', 'mtd_oobtest_init', 'mtd_pagetest_init',
> 'tort_init', 'mtd_subpagetest_init', 'fixup_pmc551',
> 'doc_set_driver_info', 'init_amd76xrom', 'init_l440gx',
> 'init_sc520cdp', 'init_ichxrom', 'init_ck804xrom', 'init_esb2rom',
> 'ubi_gluebi_init', 'ubiblock_init'
> 'ubi_init', 'mtd_stresstest_init',
All of this is MTD and can just be disabled wholesale.
Aside of that, most of these depend on either platform devices or device
tree enumerations which are not ever available on X86.
> 'probe_acpi_namespace_devices',
> 'amd_iommu_init_pci', 'state_next',
> 'init_dmars', 'iommu_init_pci', 'early_amd_iommu_init',
> 'late_iommu_features_init', 'detect_ivrs',
> 'intel_prepare_irq_remapping', 'intel_enable_irq_remapping',
> 'intel_cleanup_irq_remapping', 'detect_intel_iommu',
> 'parse_ioapics_under_ir', 'si_domain_init',
> 'intel_iommu_init', 'dmar_table_init',
> 'enable_drhd_fault_handling',
> 'check_tylersburg_isoch',
None of this is reachable because the initial detection which is ACPI
table based will fail for TDX. If not, it's a guest firmware problem.
> 'fb_console_init', 'xenbus_probe_backend_init',
> 'xenbus_probe_frontend_init', 'setup_vcpu_hotplug_event',
> 'balloon_init',
XEN, that's relevant because magically the TDX guest will assume that it
is a XEN instance?
> 'ostm_init_clksrc', 'ftm_clockevent_init', 'ftm_clocksource_init',
> 'kona_timer_init', 'mtk_gpt_init', 'samsung_clockevent_init',
> 'samsung_clocksource_init', 'sysctr_timer_init', 'mxs_timer_init',
> 'sun4i_timer_init', 'at91sam926x_pit_dt_init', 'owl_timer_init',
> 'sun5i_setup_clockevent',
> 'mt7621_clk_init',
> 'samsung_clk_register_mux', 'samsung_clk_register_gate',
> 'samsung_clk_register_fixed_rate', 'clk_boston_setup',
> 'gemini_cc_init', 'aspeed_ast2400_cc', 'aspeed_ast2500_cc',
> 'sun6i_rtc_clk_init', 'phy_init', 'ingenic_ost_register_clock',
> 'meson6_timer_init', 'atcpit100_timer_init',
> 'npcm7xx_clocksource_init', 'clksrc_dbx500_prcmu_init',
> 'rcar_sysc_pd_setup', 'r8a779a0_sysc_pd_setup', 'renesas_soc_init',
> 'rcar_rst_init', 'rmobile_setup_pm_domain', 'mcp_write_pairing_set',
> 'a72_b53_rac_enable_all', 'mcp_a72_b53_set',
> 'brcmstb_soc_device_early_init', 'imx8mq_soc_revision',
> 'imx8mm_soc_uid', 'imx8mm_soc_revision', 'qe_init',
> 'exynos5x_clk_init', 'exynos5250_clk_init', 'exynos4_get_xom',
> 'create_one_cmux', 'create_one_pll', 'p2041_init_periph',
> 'p4080_init_periph', 'p5020_init_periph', 'p5040_init_periph',
> 'r9a06g032_clocks_probe', 'r8a73a4_cpg_clocks_init',
> 'sh73a0_cpg_clocks_init', 'cpg_div6_register',
> 'r8a7740_cpg_clocks_init', 'cpg_mssr_register_mod_clk',
> 'cpg_mssr_register_core_clk', 'rcar_gen3_cpg_clk_register',
> 'cpg_sd_clk_register', 'r7s9210_update_clk_table',
> 'rz_cpg_read_mode_pins', 'rz_cpg_clocks_init',
> 'rcar_r8a779a0_cpg_clk_register', 'rcar_gen2_cpg_clk_register',
> 'sun8i_a33_ccu_setup', 'sun8i_a23_ccu_setup', 'sun5i_ccu_init',
> 'suniv_f1c100s_ccu_setup', 'sun6i_a31_ccu_setup',
> 'sun8i_v3_v3s_ccu_init', 'sun50i_h616_ccu_setup',
> 'sunxi_h3_h5_ccu_init', 'sun4i_ccu_init', 'kona_ccu_init',
> 'ns2_genpll_scr_clk_init', 'ns2_genpll_sw_clk_init',
> 'ns2_lcpll_ddr_clk_init', 'ns2_lcpll_ports_clk_init',
> 'nsp_genpll_clk_init', 'nsp_lcpll0_clk_init',
> 'cygnus_genpll_clk_init', 'cygnus_lcpll0_clk_init',
> 'cygnus_mipipll_clk_init', 'cygnus_audiopll_clk_init',
> 'of_fixed_mmio_clk_setup',
> 'arm_v7s_do_selftests', 'arm_lpae_run_tests', 'init_iommu_one',
ARM based drivers are initialized on x86 in which way?
> 'hv_init_tsc_clocksource', 'hv_init_clocksource',
HyperV. See XEN
> 'skx_init',
> 'i10nm_init', 'sbridge_init', 'i82975x_init', 'i3000_init',
> 'x38_init', 'ie31200_init', 'i3200_init', 'amd64_edac_init',
> 'pnd2_init', 'edac_init', 'adummy_init',
EDAC has already hypervisor checks
> 'init_acpi_pm_clocksource',
Requires ACPI table entry or command line override
> 'intel_rng_mod_init',
Has an old style PCI table which is searched via pci_get_device(). Could
do with a cleanup which converts it to proper PCI probing.
<SNIP>
So I stop here, because it would be way simpler to have the file names
but so far I could identify all of it from the top of my head.
So what are you trying to tell me? That you found tons of ioremaps in
__init functions which are completely irrelevant.
Please stop making arguments based on completely nonsensical data. It
took me less than 5 minutes to eliminate more than 50% of that list and
I'm pretty sure that I could have eliminated the bulk of the rest as
well.
The fact that a large part of this is ARM only, the fact that nobody
bothered to look at how e.g. IOMMU detection works and whether those
ioremaps actually can't be reached is hillarious.
So of these 400 instances are at least 30% ARM specific and those
cannot be reached on ARM nilly willy either because they are either
device tree or ACPI enumerated.
Claiming that it is soo much work to analyze 400 at least to the point:
- whether they are relevant for x86 and therefore potentially TDX at
all
- whether they have some form of enumeration or detection which makes
the ioremaps unreachable when the trusted BIOS is implemented
correctly
Ijust can laugh at that, really:
Two of my engineers have done an inventory of hundreds of cpu hotplug
notifier instances in a couple of days some years ago. Ditto for a
couple of hundred seqcount and a couple of hundred tasklet usage
sites.
Sure, but it makes more security handwaving and a nice presentation to
tell people how much unsecure code there is based on half thought out
static analysis. To do a proper static analysis of this, you really
have to do a proper brain based analysis first of:
1) Which code is relevant for x86
2) What are the mechanisms which are used across the X86 relevant
driver space to make these ioremap/MSR accesses actually reachable.
And of course this will not be complete, but this eliminates the vast
majority of your list. And looking at the remaining ones is not rocket
science either.
I can't take that serious at all. Come back when you have a properly
compiled list of drivers which:
1) Can even be built for X86
2) Do ioremap/MSR based poking unconditionally.
3) Cannot be easily guarded off at the subsystem level
It's not going to be a huge list.
Then we can talk about facts and talk about the work required to fix
them or blacklist them in some way.
Thanks,
tglx
next prev parent reply other threads:[~2021-10-17 21:52 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-09 0:36 [PATCH v5 00/16] Add TDX Guest Support (shared-mm support) Kuppuswamy Sathyanarayanan
2021-10-09 0:36 ` [PATCH v5 01/16] x86/mm: Move force_dma_unencrypted() to common code Kuppuswamy Sathyanarayanan
2021-10-20 16:11 ` Tom Lendacky
2021-10-20 16:43 ` Sathyanarayanan Kuppuswamy
2021-10-09 0:36 ` [PATCH v5 02/16] x86/tdx: Get TD execution environment information via TDINFO Kuppuswamy Sathyanarayanan
2021-10-09 0:36 ` [PATCH v5 03/16] x86/tdx: Exclude Shared bit from physical_mask Kuppuswamy Sathyanarayanan
2021-11-05 22:11 ` Sean Christopherson
2021-11-08 14:45 ` Kirill A. Shutemov
2021-10-09 0:36 ` [PATCH v5 04/16] x86/tdx: Make pages shared in ioremap() Kuppuswamy Sathyanarayanan
2021-10-20 16:03 ` Tom Lendacky
2021-10-20 16:41 ` Sathyanarayanan Kuppuswamy
2021-10-09 0:37 ` [PATCH v5 05/16] x86/tdx: Add helper to do MapGPA hypercall Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 06/16] x86/tdx: Make DMA pages shared Kuppuswamy Sathyanarayanan
2021-10-20 16:33 ` Tom Lendacky
2021-10-20 16:45 ` Sathyanarayanan Kuppuswamy
2021-10-20 17:22 ` Tom Lendacky
2021-10-20 17:26 ` Sathyanarayanan Kuppuswamy
2021-10-09 0:37 ` [PATCH v5 07/16] x86/kvm: Use bounce buffers for TD guest Kuppuswamy Sathyanarayanan
2021-10-20 16:39 ` Tom Lendacky
2021-10-20 16:50 ` Sathyanarayanan Kuppuswamy
2021-10-20 17:26 ` Tom Lendacky
2021-10-09 0:37 ` [PATCH v5 08/16] x86/tdx: ioapic: Add shared bit for IOAPIC base address Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 09/16] x86/tdx: Enable shared memory confidential guest flags for TDX guest Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 10/16] PCI: Consolidate pci_iomap_range(), pci_iomap_wc_range() Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 11/16] asm/io.h: Add ioremap_host_shared fallback Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 12/16] PCI: Add pci_iomap_host_shared(), pci_iomap_host_shared_range() Kuppuswamy Sathyanarayanan
2021-10-09 9:53 ` Michael S. Tsirkin
2021-10-09 20:39 ` Dan Williams
2021-10-10 22:11 ` Andi Kleen
2021-10-12 17:42 ` Dan Williams
2021-10-12 18:35 ` Andi Kleen
2021-10-12 21:14 ` Dan Williams
2021-10-12 21:18 ` Michael S. Tsirkin
2021-10-12 21:24 ` Andi Kleen
2021-10-12 21:28 ` Andi Kleen
2021-10-12 22:00 ` Dan Williams
2021-10-18 12:13 ` Greg KH
2021-10-12 18:36 ` Reshetova, Elena
2021-10-12 18:38 ` Andi Kleen
2021-10-12 18:57 ` Reshetova, Elena
2021-10-12 19:13 ` Dan Williams
2021-10-12 19:49 ` Andi Kleen
2021-10-12 21:11 ` Michael S. Tsirkin
2021-10-14 6:32 ` Reshetova, Elena
2021-10-14 6:57 ` Michael S. Tsirkin
2021-10-14 7:27 ` Reshetova, Elena
2021-10-14 9:26 ` Michael S. Tsirkin
2021-10-14 12:33 ` Reshetova, Elena
2021-10-17 22:17 ` Michael S. Tsirkin
2021-10-14 11:49 ` Michael S. Tsirkin
2021-10-17 21:52 ` Thomas Gleixner [this message]
2021-10-18 7:03 ` Reshetova, Elena
2021-10-18 0:55 ` Thomas Gleixner
2021-10-18 1:10 ` Thomas Gleixner
2021-10-18 12:08 ` Greg KH
2021-10-10 22:22 ` Andi Kleen
2021-10-11 11:59 ` Michael S. Tsirkin
2021-10-11 17:32 ` Andi Kleen
2021-10-11 18:22 ` Michael S. Tsirkin
2021-10-18 12:15 ` Greg KH
2021-10-18 13:17 ` Michael S. Tsirkin
2021-10-11 7:58 ` Christoph Hellwig
2021-10-11 17:23 ` Andi Kleen
2021-10-11 19:09 ` Michael S. Tsirkin
2021-10-12 5:31 ` Christoph Hellwig
2021-10-12 18:37 ` Andi Kleen
2021-10-09 0:37 ` [PATCH v5 13/16] PCI: Mark MSI data shared Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 14/16] virtio: Use shared mappings for virtio PCI devices Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 15/16] x86/tdx: Implement ioremap_host_shared for x86 Kuppuswamy Sathyanarayanan
2021-10-09 0:37 ` [PATCH v5 16/16] x86/tdx: Add cmdline option to force use of ioremap_host_shared Kuppuswamy Sathyanarayanan
2021-10-09 1:45 ` Randy Dunlap
2021-10-09 2:10 ` Kuppuswamy, Sathyanarayanan
2021-10-09 11:04 ` Michael S. Tsirkin
2021-10-11 2:39 ` Andi Kleen
2021-10-11 12:04 ` Michael S. Tsirkin
2021-10-11 17:35 ` Andi Kleen
2021-10-11 18:28 ` Michael S. Tsirkin
2021-10-12 17:55 ` Andi Kleen
2021-10-12 20:59 ` Michael S. Tsirkin
2021-10-12 21:18 ` Andi Kleen
2021-10-12 21:30 ` Michael S. Tsirkin
2021-10-15 5:50 ` Andi Kleen
2021-10-15 6:57 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r1cj2uad.ffs@tglx \
--to=tglx@linutronix.de \
--cc=James.Bottomley@hansenpartnership.com \
--cc=aarcange@redhat.com \
--cc=ak@linux.intel.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=davem@davemloft.net \
--cc=david@redhat.com \
--cc=deller@gmx.de \
--cc=elena.reshetova@intel.com \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=knsathya@kernel.org \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rth@twiddle.net \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=seanjc@google.com \
--cc=sparclinux@vger.kernel.org \
--cc=tony.luck@intel.com \
--cc=tsbogend@alpha.franken.de \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).