init.c (f52c895a2de8697108c6385e9695061585690dc8) init.c (a48130e92f1c86638295a53d1735dfed7f55a2c4)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2007-2010 Advanced Micro Devices, Inc.
4 * Author: Joerg Roedel <jroedel@suse.de>
5 * Leo Duran <leo.duran@amd.com>
6 */
7
8#define pr_fmt(fmt) "AMD-Vi: " fmt

--- 2929 unchanged lines hidden (view full) ---

2938 amd_iommu_irq_ops.capability |= (1 << IRQ_POSTING_CAP);
2939 pr_info("Virtual APIC enabled\n");
2940#endif
2941}
2942
2943static void enable_iommus(void)
2944{
2945 early_enable_iommus();
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2007-2010 Advanced Micro Devices, Inc.
4 * Author: Joerg Roedel <jroedel@suse.de>
5 * Leo Duran <leo.duran@amd.com>
6 */
7
8#define pr_fmt(fmt) "AMD-Vi: " fmt

--- 2929 unchanged lines hidden (view full) ---

2938 amd_iommu_irq_ops.capability |= (1 << IRQ_POSTING_CAP);
2939 pr_info("Virtual APIC enabled\n");
2940#endif
2941}
2942
2943static void enable_iommus(void)
2944{
2945 early_enable_iommus();
2946 enable_iommus_vapic();
2947 enable_iommus_v2();
2948}
2949
2950static void disable_iommus(void)
2951{
2952 struct amd_iommu *iommu;
2953
2954 for_each_iommu(iommu)
2955 iommu_disable(iommu);

--- 247 unchanged lines hidden (view full) ---

3203 int ret = 0;
3204
3205 for_each_iommu(iommu) {
3206 ret = iommu_init_irq(iommu);
3207 if (ret)
3208 goto out;
3209 }
3210
2946}
2947
2948static void disable_iommus(void)
2949{
2950 struct amd_iommu *iommu;
2951
2952 for_each_iommu(iommu)
2953 iommu_disable(iommu);

--- 247 unchanged lines hidden (view full) ---

3201 int ret = 0;
3202
3203 for_each_iommu(iommu) {
3204 ret = iommu_init_irq(iommu);
3205 if (ret)
3206 goto out;
3207 }
3208
3209 /*
3210 * Interrupt handler is ready to process interrupts. Enable
3211 * PPR and GA log interrupt for all IOMMUs.
3212 */
3213 enable_iommus_vapic();
3214 enable_iommus_v2();
3215
3211out:
3212 return ret;
3213}
3214
3215static bool __init detect_ivrs(void)
3216{
3217 struct acpi_table_header *ivrs_base;
3218 acpi_status status;

--- 63 unchanged lines hidden (view full) ---

3282 early_enable_iommus();
3283 x86_platform.iommu_shutdown = disable_iommus;
3284 init_state = IOMMU_ENABLED;
3285 break;
3286 case IOMMU_ENABLED:
3287 register_syscore_ops(&amd_iommu_syscore_ops);
3288 ret = amd_iommu_init_pci();
3289 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_PCI_INIT;
3216out:
3217 return ret;
3218}
3219
3220static bool __init detect_ivrs(void)
3221{
3222 struct acpi_table_header *ivrs_base;
3223 acpi_status status;

--- 63 unchanged lines hidden (view full) ---

3287 early_enable_iommus();
3288 x86_platform.iommu_shutdown = disable_iommus;
3289 init_state = IOMMU_ENABLED;
3290 break;
3291 case IOMMU_ENABLED:
3292 register_syscore_ops(&amd_iommu_syscore_ops);
3293 ret = amd_iommu_init_pci();
3294 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_PCI_INIT;
3290 enable_iommus_vapic();
3291 enable_iommus_v2();
3292 break;
3293 case IOMMU_PCI_INIT:
3294 ret = amd_iommu_enable_interrupts();
3295 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_INTERRUPTS_EN;
3296 break;
3297 case IOMMU_INTERRUPTS_EN:
3298 init_state = IOMMU_INITIALIZED;
3299 break;

--- 539 unchanged lines hidden ---
3295 break;
3296 case IOMMU_PCI_INIT:
3297 ret = amd_iommu_enable_interrupts();
3298 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_INTERRUPTS_EN;
3299 break;
3300 case IOMMU_INTERRUPTS_EN:
3301 init_state = IOMMU_INITIALIZED;
3302 break;

--- 539 unchanged lines hidden ---