linux-stable/arch/powerpc/platforms
Leonardo Bras 7ed2ed2db2 powerpc/pseries/iommu: Add ddw_property_create() and refactor enable_ddw()
Code used to create a ddw property that was previously scattered in
enable_ddw() is now gathered in ddw_property_create(), which deals with
allocation and filling the property, letting it ready for
of_property_add(), which now occurs in sequence.

This created an opportunity to reorganize the second part of enable_ddw():

Without this patch enable_ddw() does, in order:
kzalloc() property & members, create_ddw(), fill ddwprop inside property,
ddw_list_new_entry(), do tce_setrange_multi_pSeriesLP_walk in all memory,
of_add_property(), and list_add().

With this patch enable_ddw() does, in order:
create_ddw(), ddw_property_create(), of_add_property(),
ddw_list_new_entry(), do tce_setrange_multi_pSeriesLP_walk in all memory,
and list_add().

This change requires of_remove_property() in case anything fails after
of_add_property(), but we get to do tce_setrange_multi_pSeriesLP_walk
in all memory, which looks the most expensive operation, only if
everything else succeeds.

Also, the error path got remove_ddw() replaced by a new helper
__remove_dma_window(), which only removes the new DDW with an rtas-call.
For this, a new helper clean_dma_window() was needed to clean anything
that could left if walk_system_ram_range() fails.

Signed-off-by: Leonardo Bras <leobras.c@gmail.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210817063929.38701-7-leobras.c@gmail.com
2021-08-27 00:56:55 +10:00
..
4xx powerpc: Add esr as a synonym for pt_regs.dsisr 2021-08-26 21:21:06 +10:00
8xx powerpc: bad_page_fault get registers from regs 2021-02-09 00:02:09 +11:00
40x powerpc: Remove IBM405 Erratum #77 2020-05-28 23:24:36 +10:00
44x powerpc: Add esr as a synonym for pt_regs.dsisr 2021-08-26 21:21:06 +10:00
52xx powerpc: Bulk conversion to generic_handle_domain_irq() 2021-08-10 23:15:02 +10:00
82xx powerpc: Bulk conversion to generic_handle_domain_irq() 2021-08-10 23:15:02 +10:00
83xx powerpc/83xx: Fix build error when CONFIG_PCI=n 2021-02-11 23:28:51 +11:00
85xx powerpc: retire sbc8548 board support 2021-08-27 00:48:11 +10:00
86xx powerpc: retire sbc8641d board support 2021-08-27 00:48:18 +10:00
512x powerpc: Bulk conversion to generic_handle_domain_irq() 2021-08-10 23:15:02 +10:00
amigaone powerpc/amigaone: Make amigaone_discover_phbs() static 2021-02-11 23:28:51 +11:00
book3s powerpc/vas: Move update_csb/dump_crb to common book3s platform 2021-06-20 21:58:56 +10:00
cell powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
chrp powerpc/chrp: Make hydra_init() static 2021-03-24 14:09:29 +11:00
embedded6xx powerpc: Refactor verification of MSR_RI 2021-08-26 21:21:07 +10:00
maple powerpc/pci: fix warning comparing pointer to 0 2021-03-29 13:22:13 +11:00
microwatt powerpc/microwatt: Add support for hardware random number generator 2021-06-21 21:16:32 +10:00
pasemi powerpc: Refactor verification of MSR_RI 2021-08-26 21:21:07 +10:00
powermac powerpc/smp: Fix fall-through warning for Clang 2021-07-14 11:10:40 -05:00
powernv Merge branch 'topic/ppc-kvm' into next 2021-08-26 21:21:11 +10:00
ps3 powerpc/kexec: blacklist functions called in real mode for kprobe 2021-07-26 20:38:51 +10:00
pseries powerpc/pseries/iommu: Add ddw_property_create() and refactor enable_ddw() 2021-08-27 00:56:55 +10:00
fsl_uli1575.c
Kconfig powerpc/64s: Make prom_init require RELOCATABLE 2021-06-25 14:47:19 +10:00
Kconfig.cputype powerpc/mm: enable HAVE_MOVE_PMD support 2021-07-08 11:48:23 -07:00
Makefile powerpc: Add Microwatt platform 2021-06-21 21:15:26 +10:00