* drivers/iommu/arm/arm-smmu/arm-smmu.c:831 arm_smmu_init_domain_context() warn: should '~0 << ias' be a 64 bit
@ 2020-10-22 12:29 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2020-10-22 12:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 26414 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jordan Crouse <jcrouse@codeaurora.org>
CC: Will Deacon <will@kernel.org>
CC: Rob Clark <robdclark@chromium.org>
CC: Bjorn Andersson <bjorn.andersson@linaro.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f804b3159482eedbb4250b1e9248c308fb63b805
commit: 67f1a7a314a2c29832ae604f839653408492ee5d iommu/arm-smmu: Add support for split pagetables
date: 4 weeks ago
:::::: branch date: 18 hours ago
:::::: commit date: 4 weeks ago
config: i386-randconfig-m021-20201022 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/iommu/arm/arm-smmu/arm-smmu.c:831 arm_smmu_init_domain_context() warn: should '~0 << ias' be a 64 bit type?
Old smatch warnings:
drivers/iommu/arm/arm-smmu/arm-smmu.c:1855 arm_smmu_device_cfg_probe() warn: should '2 * size << smmu->pgshift' be a 64 bit type?
vim +831 drivers/iommu/arm/arm-smmu/arm-smmu.c
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 666
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 667 static int arm_smmu_init_domain_context(struct iommu_domain *domain,
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 668 struct arm_smmu_device *smmu)
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 669 {
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 670 int irq, start, ret = 0;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 671 unsigned long ias, oas;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 672 struct io_pgtable_ops *pgtbl_ops;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 673 struct io_pgtable_cfg pgtbl_cfg;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 674 enum io_pgtable_fmt fmt;
1d672638fca24db drivers/iommu/arm-smmu.c Joerg Roedel 2015-03-26 675 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 676 struct arm_smmu_cfg *cfg = &smmu_domain->cfg;
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 677 irqreturn_t (*context_fault)(int irq, void *dev);
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 678
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 679 mutex_lock(&smmu_domain->init_mutex);
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 680 if (smmu_domain->smmu)
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 681 goto out_unlock;
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 682
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 683 if (domain->type == IOMMU_DOMAIN_IDENTITY) {
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 684 smmu_domain->stage = ARM_SMMU_DOMAIN_BYPASS;
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 685 smmu_domain->smmu = smmu;
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 686 goto out_unlock;
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 687 }
61bc671179f1906 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 688
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 689 /*
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 690 * Mapping the requested stage onto what we support is surprisingly
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 691 * complicated, mainly because the spec allows S1+S2 SMMUs without
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 692 * support for nested translation. That means we end up with the
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 693 * following table:
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 694 *
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 695 * Requested Supported Actual
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 696 * S1 N S1
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 697 * S1 S1+S2 S1
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 698 * S1 S2 S2
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 699 * S1 S1 S1
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 700 * N N N
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 701 * N S1+S2 S2
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 702 * N S2 S2
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 703 * N S1 S1
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 704 *
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 705 * Note that you can't actually request stage-2 mappings.
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 706 */
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 707 if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1))
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 708 smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 709 if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S2))
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 710 smmu_domain->stage = ARM_SMMU_DOMAIN_S1;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 711
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 712 /*
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 713 * Choosing a suitable context format is even more fiddly. Until we
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 714 * grow some way for the caller to express a preference, and/or move
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 715 * the decision into the io-pgtable code where it arguably belongs,
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 716 * just aim for the closest thing to the rest of the system, and hope
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 717 * that the hardware isn't esoteric enough that we can't assume AArch64
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 718 * support to be a superset of AArch32 support...
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 719 */
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 720 if (smmu->features & ARM_SMMU_FEAT_FMT_AARCH32_L)
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 721 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH32_L;
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 722 if (IS_ENABLED(CONFIG_IOMMU_IO_PGTABLE_ARMV7S) &&
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 723 !IS_ENABLED(CONFIG_64BIT) && !IS_ENABLED(CONFIG_ARM_LPAE) &&
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 724 (smmu->features & ARM_SMMU_FEAT_FMT_AARCH32_S) &&
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 725 (smmu_domain->stage == ARM_SMMU_DOMAIN_S1))
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 726 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH32_S;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 727 if ((IS_ENABLED(CONFIG_64BIT) || cfg->fmt == ARM_SMMU_CTX_FMT_NONE) &&
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 728 (smmu->features & (ARM_SMMU_FEAT_FMT_AARCH64_64K |
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 729 ARM_SMMU_FEAT_FMT_AARCH64_16K |
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 730 ARM_SMMU_FEAT_FMT_AARCH64_4K)))
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 731 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH64;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 732
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 733 if (cfg->fmt == ARM_SMMU_CTX_FMT_NONE) {
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 734 ret = -EINVAL;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 735 goto out_unlock;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 736 }
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 737
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 738 switch (smmu_domain->stage) {
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 739 case ARM_SMMU_DOMAIN_S1:
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 740 cfg->cbar = CBAR_TYPE_S1_TRANS_S2_BYPASS;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 741 start = smmu->num_s2_context_banks;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 742 ias = smmu->va_size;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 743 oas = smmu->ipa_size;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 744 if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH64) {
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 745 fmt = ARM_64_LPAE_S1;
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 746 } else if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH32_L) {
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 747 fmt = ARM_32_LPAE_S1;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 748 ias = min(ias, 32UL);
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 749 oas = min(oas, 40UL);
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 750 } else {
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 751 fmt = ARM_V7S;
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 752 ias = min(ias, 32UL);
6070529bebd26e0 drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 753 oas = min(oas, 32UL);
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 754 }
abfd6fe0cd535d3 drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 755 smmu_domain->flush_ops = &arm_smmu_s1_tlb_ops;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 756 break;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 757 case ARM_SMMU_DOMAIN_NESTED:
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 758 /*
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 759 * We will likely want to change this if/when KVM gets
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 760 * involved.
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 761 */
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 762 case ARM_SMMU_DOMAIN_S2:
9c5c92e35cf5c4f drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 763 cfg->cbar = CBAR_TYPE_S2_TRANS;
9c5c92e35cf5c4f drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 764 start = 0;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 765 ias = smmu->ipa_size;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 766 oas = smmu->pa_size;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 767 if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH64) {
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 768 fmt = ARM_64_LPAE_S2;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 769 } else {
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 770 fmt = ARM_32_LPAE_S2;
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 771 ias = min(ias, 40UL);
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 772 oas = min(oas, 40UL);
7602b8710645da4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 773 }
11febfca2419652 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 774 if (smmu->version == ARM_SMMU_V2)
abfd6fe0cd535d3 drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 775 smmu_domain->flush_ops = &arm_smmu_s2_tlb_ops_v2;
11febfca2419652 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 776 else
abfd6fe0cd535d3 drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 777 smmu_domain->flush_ops = &arm_smmu_s2_tlb_ops_v1;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 778 break;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 779 default:
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 780 ret = -EINVAL;
c752ce45b213de8 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 781 goto out_unlock;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 782 }
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 783 ret = __arm_smmu_alloc_bitmap(smmu->context_map, start,
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 784 smmu->num_context_banks);
287980e49ffc0f6 drivers/iommu/arm-smmu.c Arnd Bergmann 2016-05-27 785 if (ret < 0)
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 786 goto out_unlock;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 787
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 788 cfg->cbndx = ret;
b7862e3559f9ab4 drivers/iommu/arm-smmu.c Robin Murphy 2016-04-13 789 if (smmu->version < ARM_SMMU_V2) {
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 790 cfg->irptndx = atomic_inc_return(&smmu->irptndx);
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 791 cfg->irptndx %= smmu->num_context_irqs;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 792 } else {
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 793 cfg->irptndx = cfg->cbndx;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 794 }
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 795
280b683ceaceb75 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 796 if (smmu_domain->stage == ARM_SMMU_DOMAIN_S2)
ba7e4a08bbf7441 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 797 cfg->vmid = cfg->cbndx + 1;
280b683ceaceb75 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 798 else
ba7e4a08bbf7441 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 799 cfg->asid = cfg->cbndx;
ba7e4a08bbf7441 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 800
ba7e4a08bbf7441 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 801 smmu_domain->smmu = smmu;
280b683ceaceb75 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 802
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 803 pgtbl_cfg = (struct io_pgtable_cfg) {
d546635731317a5 drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 804 .pgsize_bitmap = smmu->pgsize_bitmap,
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 805 .ias = ias,
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 806 .oas = oas,
4f41845b340783e drivers/iommu/arm-smmu.c Will Deacon 2019-06-25 807 .coherent_walk = smmu->features & ARM_SMMU_FEAT_COHERENT_WALK,
696bcfb70986207 drivers/iommu/arm-smmu.c Robin Murphy 2019-09-18 808 .tlb = smmu_domain->flush_ops,
2df7a25ce4a7909 drivers/iommu/arm-smmu.c Robin Murphy 2015-07-29 809 .iommu_dev = smmu->dev,
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 810 };
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 811
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 812 if (smmu->impl && smmu->impl->init_context) {
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 813 ret = smmu->impl->init_context(smmu_domain, &pgtbl_cfg);
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 814 if (ret)
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 815 goto out_clear_smmu;
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 816 }
dd147a89f37d5ad drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 817
44f6876a00e83df drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 818 if (smmu_domain->non_strict)
44f6876a00e83df drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 819 pgtbl_cfg.quirks |= IO_PGTABLE_QUIRK_NON_STRICT;
44f6876a00e83df drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 820
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 821 pgtbl_ops = alloc_io_pgtable_ops(fmt, &pgtbl_cfg, smmu_domain);
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 822 if (!pgtbl_ops) {
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 823 ret = -ENOMEM;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 824 goto out_clear_smmu;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 825 }
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 826
d546635731317a5 drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 827 /* Update the domain's page sizes to reflect the page table format */
d546635731317a5 drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 828 domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 829
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 830 if (pgtbl_cfg.quirks & IO_PGTABLE_QUIRK_ARM_TTBR1) {
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 @831 domain->geometry.aperture_start = ~0UL << ias;
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 832 domain->geometry.aperture_end = ~0UL;
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 833 } else {
455eb7d34ad11b0 drivers/iommu/arm-smmu.c Robin Murphy 2016-09-12 834 domain->geometry.aperture_end = (1UL << ias) - 1;
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 835 }
67f1a7a314a2c29 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 836
455eb7d34ad11b0 drivers/iommu/arm-smmu.c Robin Murphy 2016-09-12 837 domain->geometry.force_aperture = true;
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 838
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 839 /* Initialise the context bank with our page table cfg */
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 840 arm_smmu_init_context_bank(smmu_domain, &pgtbl_cfg);
90df373cc62e527 drivers/iommu/arm-smmu.c Robin Murphy 2017-08-08 841 arm_smmu_write_context_bank(smmu, cfg->cbndx);
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 842
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 843 /*
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 844 * Request context fault interrupt. Do this last to avoid the
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 845 * handler seeing a half-initialised domain state.
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 846 */
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 847 irq = smmu->irqs[smmu->num_global_irqs + cfg->irptndx];
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 848
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 849 if (smmu->impl && smmu->impl->context_fault)
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 850 context_fault = smmu->impl->context_fault;
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 851 else
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 852 context_fault = arm_smmu_context_fault;
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 853
aa7ec73297df57a drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 854 ret = devm_request_irq(smmu->dev, irq, context_fault,
bee140044579fbf drivers/iommu/arm-smmu.c Peng Fan 2016-07-04 855 IRQF_SHARED, "arm-smmu-context-fault", domain);
287980e49ffc0f6 drivers/iommu/arm-smmu.c Arnd Bergmann 2016-05-27 856 if (ret < 0) {
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 857 dev_err(smmu->dev, "failed to request context IRQ %d (%u)\n",
44680eedf9409da drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 858 cfg->irptndx, irq);
fba6e960772b7b6 drivers/iommu/arm-smmu.c Will Deacon 2020-01-10 859 cfg->irptndx = ARM_SMMU_INVALID_IRPTNDX;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 860 }
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 861
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 862 mutex_unlock(&smmu_domain->init_mutex);
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 863
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 864 /* Publish page table ops for map/unmap */
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 865 smmu_domain->pgtbl_ops = pgtbl_ops;
a9a1b0b53d8b7ca drivers/iommu/arm-smmu.c Will Deacon 2014-05-01 866 return 0;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 867
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 868 out_clear_smmu:
6db7bfb431220d7 drivers/iommu/arm-smmu.c Liu Xiang 2019-09-16 869 __arm_smmu_free_bitmap(smmu->context_map, cfg->cbndx);
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 870 smmu_domain->smmu = NULL;
a18037b27ebd23e drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 871 out_unlock:
518f7136244c167 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 872 mutex_unlock(&smmu_domain->init_mutex);
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 873 return ret;
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 874 }
45ae7cff3684ab4 drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 875
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40321 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* drivers/iommu/arm/arm-smmu/arm-smmu.c:831 arm_smmu_init_domain_context() warn: should '~0 << ias' be a 64 bit
@ 2021-02-26 8:22 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-02-26 8:22 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 26314 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jordan Crouse <jcrouse@codeaurora.org>
CC: Will Deacon <will@kernel.org>
CC: Rob Clark <robdclark@chromium.org>
CC: Bjorn Andersson <bjorn.andersson@linaro.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 2c87f7a38f930ef6f6a7bdd04aeb82ce3971b54b
commit: 67f1a7a314a2c29832ae604f839653408492ee5d iommu/arm-smmu: Add support for split pagetables
date: 5 months ago
:::::: branch date: 12 hours ago
:::::: commit date: 5 months ago
config: arm-randconfig-m031-20210226 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/iommu/arm/arm-smmu/arm-smmu.c:831 arm_smmu_init_domain_context() warn: should '~0 << ias' be a 64 bit type?
Old smatch warnings:
drivers/iommu/arm/arm-smmu/arm-smmu.c:686 arm_smmu_init_domain_context() warn: missing error code 'ret'
drivers/iommu/arm/arm-smmu/arm-smmu.c:1855 arm_smmu_device_cfg_probe() warn: should '2 * size << smmu->pgshift' be a 64 bit type?
vim +831 drivers/iommu/arm/arm-smmu/arm-smmu.c
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 666
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 667 static int arm_smmu_init_domain_context(struct iommu_domain *domain,
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 668 struct arm_smmu_device *smmu)
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 669 {
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 670 int irq, start, ret = 0;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 671 unsigned long ias, oas;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 672 struct io_pgtable_ops *pgtbl_ops;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 673 struct io_pgtable_cfg pgtbl_cfg;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 674 enum io_pgtable_fmt fmt;
1d672638fca24d drivers/iommu/arm-smmu.c Joerg Roedel 2015-03-26 675 struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 676 struct arm_smmu_cfg *cfg = &smmu_domain->cfg;
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 677 irqreturn_t (*context_fault)(int irq, void *dev);
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 678
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 679 mutex_lock(&smmu_domain->init_mutex);
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 680 if (smmu_domain->smmu)
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 681 goto out_unlock;
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 682
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 683 if (domain->type == IOMMU_DOMAIN_IDENTITY) {
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 684 smmu_domain->stage = ARM_SMMU_DOMAIN_BYPASS;
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 685 smmu_domain->smmu = smmu;
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 686 goto out_unlock;
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 687 }
61bc671179f190 drivers/iommu/arm-smmu.c Will Deacon 2017-01-06 688
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 689 /*
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 690 * Mapping the requested stage onto what we support is surprisingly
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 691 * complicated, mainly because the spec allows S1+S2 SMMUs without
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 692 * support for nested translation. That means we end up with the
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 693 * following table:
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 694 *
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 695 * Requested Supported Actual
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 696 * S1 N S1
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 697 * S1 S1+S2 S1
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 698 * S1 S2 S2
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 699 * S1 S1 S1
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 700 * N N N
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 701 * N S1+S2 S2
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 702 * N S2 S2
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 703 * N S1 S1
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 704 *
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 705 * Note that you can't actually request stage-2 mappings.
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 706 */
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 707 if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S1))
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 708 smmu_domain->stage = ARM_SMMU_DOMAIN_S2;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 709 if (!(smmu->features & ARM_SMMU_FEAT_TRANS_S2))
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 710 smmu_domain->stage = ARM_SMMU_DOMAIN_S1;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 711
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 712 /*
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 713 * Choosing a suitable context format is even more fiddly. Until we
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 714 * grow some way for the caller to express a preference, and/or move
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 715 * the decision into the io-pgtable code where it arguably belongs,
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 716 * just aim for the closest thing to the rest of the system, and hope
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 717 * that the hardware isn't esoteric enough that we can't assume AArch64
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 718 * support to be a superset of AArch32 support...
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 719 */
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 720 if (smmu->features & ARM_SMMU_FEAT_FMT_AARCH32_L)
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 721 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH32_L;
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 722 if (IS_ENABLED(CONFIG_IOMMU_IO_PGTABLE_ARMV7S) &&
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 723 !IS_ENABLED(CONFIG_64BIT) && !IS_ENABLED(CONFIG_ARM_LPAE) &&
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 724 (smmu->features & ARM_SMMU_FEAT_FMT_AARCH32_S) &&
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 725 (smmu_domain->stage == ARM_SMMU_DOMAIN_S1))
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 726 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH32_S;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 727 if ((IS_ENABLED(CONFIG_64BIT) || cfg->fmt == ARM_SMMU_CTX_FMT_NONE) &&
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 728 (smmu->features & (ARM_SMMU_FEAT_FMT_AARCH64_64K |
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 729 ARM_SMMU_FEAT_FMT_AARCH64_16K |
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 730 ARM_SMMU_FEAT_FMT_AARCH64_4K)))
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 731 cfg->fmt = ARM_SMMU_CTX_FMT_AARCH64;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 732
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 733 if (cfg->fmt == ARM_SMMU_CTX_FMT_NONE) {
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 734 ret = -EINVAL;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 735 goto out_unlock;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 736 }
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 737
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 738 switch (smmu_domain->stage) {
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 739 case ARM_SMMU_DOMAIN_S1:
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 740 cfg->cbar = CBAR_TYPE_S1_TRANS_S2_BYPASS;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 741 start = smmu->num_s2_context_banks;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 742 ias = smmu->va_size;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 743 oas = smmu->ipa_size;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 744 if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH64) {
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 745 fmt = ARM_64_LPAE_S1;
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 746 } else if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH32_L) {
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 747 fmt = ARM_32_LPAE_S1;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 748 ias = min(ias, 32UL);
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 749 oas = min(oas, 40UL);
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 750 } else {
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 751 fmt = ARM_V7S;
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 752 ias = min(ias, 32UL);
6070529bebd26e drivers/iommu/arm-smmu.c Robin Murphy 2016-08-11 753 oas = min(oas, 32UL);
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 754 }
abfd6fe0cd535d drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 755 smmu_domain->flush_ops = &arm_smmu_s1_tlb_ops;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 756 break;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 757 case ARM_SMMU_DOMAIN_NESTED:
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 758 /*
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 759 * We will likely want to change this if/when KVM gets
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 760 * involved.
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 761 */
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 762 case ARM_SMMU_DOMAIN_S2:
9c5c92e35cf5c4 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 763 cfg->cbar = CBAR_TYPE_S2_TRANS;
9c5c92e35cf5c4 drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 764 start = 0;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 765 ias = smmu->ipa_size;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 766 oas = smmu->pa_size;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 767 if (cfg->fmt == ARM_SMMU_CTX_FMT_AARCH64) {
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 768 fmt = ARM_64_LPAE_S2;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 769 } else {
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 770 fmt = ARM_32_LPAE_S2;
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 771 ias = min(ias, 40UL);
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 772 oas = min(oas, 40UL);
7602b8710645da drivers/iommu/arm-smmu.c Robin Murphy 2016-04-28 773 }
11febfca241965 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 774 if (smmu->version == ARM_SMMU_V2)
abfd6fe0cd535d drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 775 smmu_domain->flush_ops = &arm_smmu_s2_tlb_ops_v2;
11febfca241965 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 776 else
abfd6fe0cd535d drivers/iommu/arm-smmu.c Will Deacon 2019-07-02 777 smmu_domain->flush_ops = &arm_smmu_s2_tlb_ops_v1;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 778 break;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 779 default:
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 780 ret = -EINVAL;
c752ce45b213de drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 781 goto out_unlock;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 782 }
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 783 ret = __arm_smmu_alloc_bitmap(smmu->context_map, start,
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 784 smmu->num_context_banks);
287980e49ffc0f drivers/iommu/arm-smmu.c Arnd Bergmann 2016-05-27 785 if (ret < 0)
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 786 goto out_unlock;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 787
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 788 cfg->cbndx = ret;
b7862e3559f9ab drivers/iommu/arm-smmu.c Robin Murphy 2016-04-13 789 if (smmu->version < ARM_SMMU_V2) {
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 790 cfg->irptndx = atomic_inc_return(&smmu->irptndx);
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 791 cfg->irptndx %= smmu->num_context_irqs;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 792 } else {
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 793 cfg->irptndx = cfg->cbndx;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 794 }
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 795
280b683ceaceb7 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 796 if (smmu_domain->stage == ARM_SMMU_DOMAIN_S2)
ba7e4a08bbf744 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 797 cfg->vmid = cfg->cbndx + 1;
280b683ceaceb7 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 798 else
ba7e4a08bbf744 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 799 cfg->asid = cfg->cbndx;
ba7e4a08bbf744 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 800
ba7e4a08bbf744 drivers/iommu/arm-smmu.c Robin Murphy 2019-08-15 801 smmu_domain->smmu = smmu;
280b683ceaceb7 drivers/iommu/arm-smmu.c Robin Murphy 2017-03-30 802
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 803 pgtbl_cfg = (struct io_pgtable_cfg) {
d546635731317a drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 804 .pgsize_bitmap = smmu->pgsize_bitmap,
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 805 .ias = ias,
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 806 .oas = oas,
4f41845b340783 drivers/iommu/arm-smmu.c Will Deacon 2019-06-25 807 .coherent_walk = smmu->features & ARM_SMMU_FEAT_COHERENT_WALK,
696bcfb7098620 drivers/iommu/arm-smmu.c Robin Murphy 2019-09-18 808 .tlb = smmu_domain->flush_ops,
2df7a25ce4a790 drivers/iommu/arm-smmu.c Robin Murphy 2015-07-29 809 .iommu_dev = smmu->dev,
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 810 };
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 811
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 812 if (smmu->impl && smmu->impl->init_context) {
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 813 ret = smmu->impl->init_context(smmu_domain, &pgtbl_cfg);
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 814 if (ret)
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 815 goto out_clear_smmu;
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 816 }
dd147a89f37d5a drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 817
44f6876a00e83d drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 818 if (smmu_domain->non_strict)
44f6876a00e83d drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 819 pgtbl_cfg.quirks |= IO_PGTABLE_QUIRK_NON_STRICT;
44f6876a00e83d drivers/iommu/arm-smmu.c Robin Murphy 2018-09-20 820
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 821 pgtbl_ops = alloc_io_pgtable_ops(fmt, &pgtbl_cfg, smmu_domain);
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 822 if (!pgtbl_ops) {
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 823 ret = -ENOMEM;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 824 goto out_clear_smmu;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 825 }
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 826
d546635731317a drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 827 /* Update the domain's page sizes to reflect the page table format */
d546635731317a drivers/iommu/arm-smmu.c Robin Murphy 2016-05-09 828 domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 829
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 830 if (pgtbl_cfg.quirks & IO_PGTABLE_QUIRK_ARM_TTBR1) {
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 @831 domain->geometry.aperture_start = ~0UL << ias;
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 832 domain->geometry.aperture_end = ~0UL;
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 833 } else {
455eb7d34ad11b drivers/iommu/arm-smmu.c Robin Murphy 2016-09-12 834 domain->geometry.aperture_end = (1UL << ias) - 1;
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 835 }
67f1a7a314a2c2 drivers/iommu/arm/arm-smmu/arm-smmu.c Jordan Crouse 2020-09-05 836
455eb7d34ad11b drivers/iommu/arm-smmu.c Robin Murphy 2016-09-12 837 domain->geometry.force_aperture = true;
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 838
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 839 /* Initialise the context bank with our page table cfg */
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 840 arm_smmu_init_context_bank(smmu_domain, &pgtbl_cfg);
90df373cc62e52 drivers/iommu/arm-smmu.c Robin Murphy 2017-08-08 841 arm_smmu_write_context_bank(smmu, cfg->cbndx);
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 842
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 843 /*
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 844 * Request context fault interrupt. Do this last to avoid the
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 845 * handler seeing a half-initialised domain state.
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 846 */
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 847 irq = smmu->irqs[smmu->num_global_irqs + cfg->irptndx];
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 848
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 849 if (smmu->impl && smmu->impl->context_fault)
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 850 context_fault = smmu->impl->context_fault;
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 851 else
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 852 context_fault = arm_smmu_context_fault;
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 853
aa7ec73297df57 drivers/iommu/arm-smmu.c Krishna Reddy 2020-07-18 854 ret = devm_request_irq(smmu->dev, irq, context_fault,
bee140044579fb drivers/iommu/arm-smmu.c Peng Fan 2016-07-04 855 IRQF_SHARED, "arm-smmu-context-fault", domain);
287980e49ffc0f drivers/iommu/arm-smmu.c Arnd Bergmann 2016-05-27 856 if (ret < 0) {
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 857 dev_err(smmu->dev, "failed to request context IRQ %d (%u)\n",
44680eedf9409d drivers/iommu/arm-smmu.c Will Deacon 2014-06-25 858 cfg->irptndx, irq);
fba6e960772b7b drivers/iommu/arm-smmu.c Will Deacon 2020-01-10 859 cfg->irptndx = ARM_SMMU_INVALID_IRPTNDX;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 860 }
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 861
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 862 mutex_unlock(&smmu_domain->init_mutex);
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 863
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 864 /* Publish page table ops for map/unmap */
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 865 smmu_domain->pgtbl_ops = pgtbl_ops;
a9a1b0b53d8b7c drivers/iommu/arm-smmu.c Will Deacon 2014-05-01 866 return 0;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 867
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 868 out_clear_smmu:
6db7bfb431220d drivers/iommu/arm-smmu.c Liu Xiang 2019-09-16 869 __arm_smmu_free_bitmap(smmu->context_map, cfg->cbndx);
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 870 smmu_domain->smmu = NULL;
a18037b27ebd23 drivers/iommu/arm-smmu.c Mitchel Humpherys 2014-07-30 871 out_unlock:
518f7136244c16 drivers/iommu/arm-smmu.c Will Deacon 2014-11-14 872 mutex_unlock(&smmu_domain->init_mutex);
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 873 return ret;
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 874 }
45ae7cff3684ab drivers/iommu/arm-smmu.c Will Deacon 2013-06-24 875
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29132 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-02-26 8:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-26 8:22 drivers/iommu/arm/arm-smmu/arm-smmu.c:831 arm_smmu_init_domain_context() warn: should '~0 << ias' be a 64 bit kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2020-10-22 12:29 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.