Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Fix CPU hotplug when using the SLB shadow buffer [POWERPC] efika: add phy-handle property for fec_mpc52xx
This commit is contained in:
commit
fd4be699b5
|
@ -2216,6 +2216,45 @@ static void __init fixup_device_tree_efika(void)
|
|||
prom_printf("fixup_device_tree_efika: ",
|
||||
"skipped entry %x - setprop error\n", i);
|
||||
}
|
||||
|
||||
/* Make sure ethernet mdio bus node exists */
|
||||
node = call_prom("finddevice", 1, 1, ADDR("/builtin/mdio"));
|
||||
if (!PHANDLE_VALID(node)) {
|
||||
prom_printf("Adding Ethernet MDIO node\n");
|
||||
call_prom("interpret", 1, 1,
|
||||
" s\" /builtin\" find-device"
|
||||
" new-device"
|
||||
" 1 encode-int s\" #address-cells\" property"
|
||||
" 0 encode-int s\" #size-cells\" property"
|
||||
" s\" mdio\" 2dup device-name device-type"
|
||||
" s\" mpc5200b-fec-phy\" encode-string"
|
||||
" s\" compatible\" property"
|
||||
" 0xf0003000 0x400 reg"
|
||||
" 0x2 encode-int"
|
||||
" 0x5 encode-int encode+"
|
||||
" 0x3 encode-int encode+"
|
||||
" s\" interrupts\" property"
|
||||
" finish-device");
|
||||
};
|
||||
|
||||
/* Make sure ethernet phy device node exist */
|
||||
node = call_prom("finddevice", 1, 1, ADDR("/builtin/mdio/ethernet-phy"));
|
||||
if (!PHANDLE_VALID(node)) {
|
||||
prom_printf("Adding Ethernet PHY node\n");
|
||||
call_prom("interpret", 1, 1,
|
||||
" s\" /builtin/mdio\" find-device"
|
||||
" new-device"
|
||||
" s\" ethernet-phy\" device-name"
|
||||
" 0x10 encode-int s\" reg\" property"
|
||||
" my-self"
|
||||
" ihandle>phandle"
|
||||
" finish-device"
|
||||
" s\" /builtin/ethernet\" find-device"
|
||||
" encode-int"
|
||||
" s\" phy-handle\" property"
|
||||
" device-end");
|
||||
}
|
||||
|
||||
}
|
||||
#else
|
||||
#define fixup_device_tree_efika()
|
||||
|
|
|
@ -82,6 +82,14 @@ static inline void slb_shadow_clear(unsigned long entry)
|
|||
get_slb_shadow()->save_area[entry].esid = 0;
|
||||
}
|
||||
|
||||
void slb_shadow_clear_all(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < SLB_NUM_BOLTED; i++)
|
||||
slb_shadow_clear(i);
|
||||
}
|
||||
|
||||
static inline void create_shadowed_slbe(unsigned long ea, int ssize,
|
||||
unsigned long flags,
|
||||
unsigned long entry)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <asm/vdso_datapage.h>
|
||||
#include <asm/pSeries_reconfig.h>
|
||||
#include "xics.h"
|
||||
#include "plpar_wrappers.h"
|
||||
|
||||
/* This version can't take the spinlock, because it never returns */
|
||||
static struct rtas_args rtas_stop_self_args = {
|
||||
|
@ -58,6 +59,7 @@ static void pseries_mach_cpu_die(void)
|
|||
local_irq_disable();
|
||||
idle_task_exit();
|
||||
xics_teardown_cpu(0);
|
||||
unregister_slb_shadow(hard_smp_processor_id(), __pa(get_slb_shadow()));
|
||||
rtas_stop_self();
|
||||
/* Should never get here... */
|
||||
BUG();
|
||||
|
|
|
@ -272,6 +272,7 @@ void vpa_init(int cpu)
|
|||
*/
|
||||
addr = __pa(&slb_shadow[cpu]);
|
||||
if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
|
||||
slb_shadow_clear_all();
|
||||
ret = register_slb_shadow(hwcpu, addr);
|
||||
if (ret)
|
||||
printk(KERN_ERR
|
||||
|
|
|
@ -286,6 +286,7 @@ extern void hpte_init_iSeries(void);
|
|||
extern void hpte_init_beat(void);
|
||||
extern void hpte_init_beat_v3(void);
|
||||
|
||||
extern void slb_shadow_clear_all(void);
|
||||
extern void stabs_alloc(void);
|
||||
extern void slb_initialize(void);
|
||||
extern void slb_flush_and_rebolt(void);
|
||||
|
|
Loading…
Reference in New Issue