]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge branches 'apple/dart', 'ti/omap', 'riscv', 'intel/vt-d' and 'amd/amd-vi' into...
authorJoerg Roedel <joerg.roedel@amd.com>
Fri, 26 Sep 2025 08:03:33 +0000 (10:03 +0200)
committerJoerg Roedel <joerg.roedel@amd.com>
Fri, 26 Sep 2025 08:03:33 +0000 (10:03 +0200)
1  2  3  4  5  6 
MAINTAINERS
arch/riscv/Kconfig
drivers/crypto/ccp/sev-dev.c
drivers/iommu/amd/amd_iommu_types.h
drivers/iommu/amd/init.c
drivers/iommu/intel/iommu.c
drivers/iommu/riscv/iommu.c

diff --cc MAINTAINERS
index 520fb4e379a3954ff9b163bfdfda857e5c5b99d4,fe168477caa45799dfe07de2f54de6d6a1ce0615,fe168477caa45799dfe07de2f54de6d6a1ce0615,af562bb23bef6169bb8f256c521af28292fc25c9,fed6cd812d796a08cebc0c1fd540c8901d1bf448,fe168477caa45799dfe07de2f54de6d6a1ce0615..bf140c0899a8b898c46f7ac88035f15131609925
@@@@@@@ -17482,8 -17451,6 -17451,6 -17452,6 -17478,7 -17451,6 +17483,8 @@@@@@@ F:       drivers/net/ethernet/neterion
      NETFILTER
      M:        Pablo Neira Ayuso <pablo@netfilter.org>
      M:        Jozsef Kadlecsik <kadlec@netfilter.org>
 +++ +M:        Florian Westphal <fw@strlen.de>
 +++++R:        Phil Sutter <phil@nwl.cc>
      L:        netfilter-devel@vger.kernel.org
      L:        coreteam@netfilter.org
      S:        Maintained
Simple merge
Simple merge
Simple merge
index ba9e582a8bbe5d17517a31241248443207164b09,7b5af6176de99074e91e07825fcc55e3310e95f7,7b5af6176de99074e91e07825fcc55e3310e95f7,7b5af6176de99074e91e07825fcc55e3310e95f7,8de689b2c5ed57a9f7c0c3a374da212b7fc5694b,186a567e68239988896634800666ce5895de0bec..f2991c11867cbaf354ecad08b399491b345e1ca1
@@@@@@@ -942,8 -942,8 -942,8 -942,8 -942,8 -978,91 +978,91 @@@@@@@ err_out
      static int __init alloc_cwwb_sem(struct amd_iommu *iommu)
      {
        iommu->cmd_sem = iommu_alloc_4k_pages(iommu, GFP_KERNEL, 1);
 ---    return iommu->cmd_sem ? 0 : -ENOMEM;
+++++   if (!iommu->cmd_sem)
+++++           return -ENOMEM;
+++++   iommu->cmd_sem_paddr = iommu_virt_to_phys((void *)iommu->cmd_sem);
+++++   return 0;
+++++ }
+++++ 
+++++ static int __init remap_event_buffer(struct amd_iommu *iommu)
+++++ {
+++++   u64 paddr;
+++++ 
+++++   pr_info_once("Re-using event buffer from the previous kernel\n");
+++++   paddr = readq(iommu->mmio_base + MMIO_EVT_BUF_OFFSET) & PM_ADDR_MASK;
+++++   iommu->evt_buf = iommu_memremap(paddr, EVT_BUFFER_SIZE);
+++++ 
+++++   return iommu->evt_buf ? 0 : -ENOMEM;
+++++ }
+++++ 
+++++ static int __init remap_command_buffer(struct amd_iommu *iommu)
+++++ {
+++++   u64 paddr;
+++++ 
+++++   pr_info_once("Re-using command buffer from the previous kernel\n");
+++++   paddr = readq(iommu->mmio_base + MMIO_CMD_BUF_OFFSET) & PM_ADDR_MASK;
+++++   iommu->cmd_buf = iommu_memremap(paddr, CMD_BUFFER_SIZE);
+++++ 
+++++   return iommu->cmd_buf ? 0 : -ENOMEM;
+++++ }
+++++ 
+++++ static int __init remap_or_alloc_cwwb_sem(struct amd_iommu *iommu)
+++++ {
+++++   u64 paddr;
+++++ 
+++++   if (check_feature(FEATURE_SNP)) {
+++++           /*
+++++            * When SNP is enabled, the exclusion base register is used for the
+++++            * completion wait buffer (CWB) address. Read and re-use it.
+++++            */
+++++           pr_info_once("Re-using CWB buffers from the previous kernel\n");
+++++           paddr = readq(iommu->mmio_base + MMIO_EXCL_BASE_OFFSET) & PM_ADDR_MASK;
+++++           iommu->cmd_sem = iommu_memremap(paddr, PAGE_SIZE);
+++++           if (!iommu->cmd_sem)
+++++                   return -ENOMEM;
+++++           iommu->cmd_sem_paddr = paddr;
+++++   } else {
+++++           return alloc_cwwb_sem(iommu);
+++++   }
+   + 
    -   return iommu->cmd_sem ? 0 : -ENOMEM;
+++++   return 0;
+++++ }
+++++ 
+++++ static int __init alloc_iommu_buffers(struct amd_iommu *iommu)
+++++ {
+++++   int ret;
+++++ 
+++++   /*
+++++    * Reuse/Remap the previous kernel's allocated completion wait
+++++    * command and event buffers for kdump boot.
+++++    */
+++++   if (is_kdump_kernel()) {
+++++           ret = remap_or_alloc_cwwb_sem(iommu);
+++++           if (ret)
+++++                   return ret;
+++++ 
+++++           ret = remap_command_buffer(iommu);
+++++           if (ret)
+++++                   return ret;
++++  
-       return iommu->cmd_sem ? 0 : -ENOMEM;
+++++           ret = remap_event_buffer(iommu);
+++++           if (ret)
+++++                   return ret;
+++++   } else {
+++++           ret = alloc_cwwb_sem(iommu);
+++++           if (ret)
+++++                   return ret;
 ++++ 
+++++           ret = alloc_command_buffer(iommu);
+++++           if (ret)
+++++                   return ret;
+++++ 
+++++           ret = alloc_event_buffer(iommu);
+++++           if (ret)
+++++                   return ret;
+++++   }
+++++ 
+++++   return 0;
      }
      
      static void __init free_cwwb_sem(struct amd_iommu *iommu)
@@@@@@@ -1015,19 -1015,19 -1015,19 -1015,19 -1015,19 -1163,13 +1163,13 @@@@@@@ static bool __reuse_device_table(struc
                pr_err("The address of old device table is above 4G, not trustworthy!\n");
                return false;
        }
-----   old_devtb = (cc_platform_has(CC_ATTR_HOST_MEM_ENCRYPT) && is_kdump_kernel())
-----               ? (__force void *)ioremap_encrypted(old_devtb_phys,
-----                                                   pci_seg->dev_table_size)
-----               : memremap(old_devtb_phys, pci_seg->dev_table_size, MEMREMAP_WB);
-   - 
-   -   if (!old_devtb)
-   -           return false;
      
 ---    if (!old_devtb)
 ---            return false;
 ---  
-----   pci_seg->old_dev_tbl_cpy = iommu_alloc_pages_sz(
-----           GFP_KERNEL | GFP_DMA32, pci_seg->dev_table_size);
+++++   /*
+++++    * Re-use the previous kernel's device table for kdump.
+++++    */
+++++   pci_seg->old_dev_tbl_cpy = iommu_memremap(old_devtb_phys, pci_seg->dev_table_size);
        if (pci_seg->old_dev_tbl_cpy == NULL) {
-----           pr_err("Failed to allocate memory for copying old device table!\n");
-----           memunmap(old_devtb);
+++++           pr_err("Failed to remap memory for reusing old device table!\n");
                return false;
        }
      
Simple merge
Simple merge