mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 23:47:04 +07:00
d27050641e
- Another round of clean-up of FDT related code in architecture code. This removes knowledge of internal FDT details from most architectures except powerpc. - Conversion of kernel's custom FDT parsing code to use libfdt. - DT based initialization for generic serial earlycon. The introduction of generic serial earlycon support went in thru tty tree. - Improve the platform device naming for DT probed devices to ensure unique naming and use parent names instead of a global index. - Fix a race condition in of_update_property. - Unify the various linker section OF match tables and fix several function prototype errors. - Update platform_get_irq_byname to work in deferred probe cases. - 2 binding doc updates -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJTjzgyAAoJEMhvYp4jgsXiFsUH/1PMTGo8CyD62VQD5ZKdAoW+ Fq6vCiRQ8assF5i5ZLcW1DqhjtoRaCKYhVbRKa5lj7cZdjlSpacI/qQPrF5Br2Ii bTE3Ff/AQwipQaz/Bj7HqJCgGwfWK8xdfgW0abKsyXMWDN86Bov/zzeu8apmws0x H1XjJRgnc/rzM4m9ny6+lss0iq6YL54SuTYNzHR33+Ywxls69SfHXIhCW0KpZcBl 5U3YUOomt40GfO46sxFA4xApAhypEK4oVq7asyiA2ArTZ/c2Pkc9p5CBqzhDLmlq yioWTwHIISv0q+yMLCuQrVGIsbUDkQyy7RQ15z6U+/e/iGO/M+j3A5yxMc3qOi4= =Onff -----END PGP SIGNATURE----- Merge tag 'devicetree-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux into next Pull DeviceTree updates from Rob Herring: - Another round of clean-up of FDT related code in architecture code. This removes knowledge of internal FDT details from most architectures except powerpc. - Conversion of kernel's custom FDT parsing code to use libfdt. - DT based initialization for generic serial earlycon. The introduction of generic serial earlycon support went in through the tty tree. - Improve the platform device naming for DT probed devices to ensure unique naming and use parent names instead of a global index. - Fix a race condition in of_update_property. - Unify the various linker section OF match tables and fix several function prototype errors. - Update platform_get_irq_byname to work in deferred probe cases. - 2 binding doc updates * tag 'devicetree-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (58 commits) of: handle NULL node in next_child iterators of/irq: provide more wrappers for !CONFIG_OF devicetree: bindings: Document micrel vendor prefix dt: bindings: dwc2: fix required value for the phy-names property of_pci_irq: kill useless variable in of_irq_parse_pci() of/irq: do irq resolution in platform_get_irq_byname() of: Add a testcase for of_find_node_by_path() of: Make of_find_node_by_path() handle /aliases of: Create unlocked version of for_each_child_of_node() lib: add glibc style strchrnul() variant of: Handle memory@0 node on PPC32 only pci/of: Remove dead code of: fix race between search and remove in of_update_property() of: Use NULL for pointers of: Stop naming platform_device using dcr address of: Ensure unique names without sacrificing determinism tty/serial: pl011: add DT based earlycon support of/fdt: add FDT serial scanning for earlycon of/fdt: add FDT address translation support serial: earlycon: add DT support ...
74 lines
1.9 KiB
C
74 lines
1.9 KiB
C
/*
|
|
* ePAPR para-virtualization support.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License, version 2, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* Copyright (C) 2012 Freescale Semiconductor, Inc.
|
|
*/
|
|
|
|
#include <linux/of.h>
|
|
#include <linux/of_fdt.h>
|
|
#include <asm/epapr_hcalls.h>
|
|
#include <asm/cacheflush.h>
|
|
#include <asm/code-patching.h>
|
|
#include <asm/machdep.h>
|
|
|
|
#if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64)
|
|
extern void epapr_ev_idle(void);
|
|
extern u32 epapr_ev_idle_start[];
|
|
#endif
|
|
|
|
bool epapr_paravirt_enabled;
|
|
|
|
static int __init early_init_dt_scan_epapr(unsigned long node,
|
|
const char *uname,
|
|
int depth, void *data)
|
|
{
|
|
const u32 *insts;
|
|
int len;
|
|
int i;
|
|
|
|
insts = of_get_flat_dt_prop(node, "hcall-instructions", &len);
|
|
if (!insts)
|
|
return 0;
|
|
|
|
if (len % 4 || len > (4 * 4))
|
|
return -1;
|
|
|
|
for (i = 0; i < (len / 4); i++) {
|
|
u32 inst = be32_to_cpu(insts[i]);
|
|
patch_instruction(epapr_hypercall_start + i, inst);
|
|
#if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64)
|
|
patch_instruction(epapr_ev_idle_start + i, inst);
|
|
#endif
|
|
}
|
|
|
|
#if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64)
|
|
if (of_get_flat_dt_prop(node, "has-idle", NULL))
|
|
ppc_md.power_save = epapr_ev_idle;
|
|
#endif
|
|
|
|
epapr_paravirt_enabled = true;
|
|
|
|
return 1;
|
|
}
|
|
|
|
int __init epapr_paravirt_early_init(void)
|
|
{
|
|
of_scan_flat_dt(early_init_dt_scan_epapr, NULL);
|
|
|
|
return 0;
|
|
}
|
|
|