Commit f06ce441 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'loongarch-fixes-6.10-1' of...

Merge tag 'loongarch-fixes-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson

Pull LoongArch fixes from Huacai Chen:
 "Some bootloader interface fixes, a dts fix, and a trivial cleanup"

* tag 'loongarch-fixes-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson:
  LoongArch: Fix GMAC's phy-mode definitions in dts
  LoongArch: Override higher address bits in JUMP_VIRT_ADDR
  LoongArch: Fix entry point in kernel image header
  LoongArch: Add all CPUs enabled by fdt to NUMA node 0
  LoongArch: Fix built-in DTB detection
  LoongArch: Remove CONFIG_ACPI_TABLE_UPGRADE in platform_init()
parents c3f38fa6 eb36e520
...@@ -44,14 +44,14 @@ linux,cma { ...@@ -44,14 +44,14 @@ linux,cma {
&gmac0 { &gmac0 {
status = "okay"; status = "okay";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
bus_id = <0x0>; bus_id = <0x0>;
}; };
&gmac1 { &gmac1 {
status = "okay"; status = "okay";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
bus_id = <0x1>; bus_id = <0x1>;
}; };
......
...@@ -43,7 +43,7 @@ linux,cma { ...@@ -43,7 +43,7 @@ linux,cma {
&gmac0 { &gmac0 {
status = "okay"; status = "okay";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
phy-handle = <&phy0>; phy-handle = <&phy0>;
mdio { mdio {
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
...@@ -58,7 +58,7 @@ phy0: ethernet-phy@0 { ...@@ -58,7 +58,7 @@ phy0: ethernet-phy@0 {
&gmac1 { &gmac1 {
status = "okay"; status = "okay";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
phy-handle = <&phy1>; phy-handle = <&phy1>;
mdio { mdio {
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
......
...@@ -92,7 +92,7 @@ phy1: ethernet-phy@1 { ...@@ -92,7 +92,7 @@ phy1: ethernet-phy@1 {
&gmac2 { &gmac2 {
status = "okay"; status = "okay";
phy-mode = "rgmii"; phy-mode = "rgmii-id";
phy-handle = <&phy2>; phy-handle = <&phy2>;
mdio { mdio {
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
......
...@@ -56,6 +56,7 @@ extern int early_cpu_to_node(int cpu); ...@@ -56,6 +56,7 @@ extern int early_cpu_to_node(int cpu);
static inline void early_numa_add_cpu(int cpuid, s16 node) { } static inline void early_numa_add_cpu(int cpuid, s16 node) { }
static inline void numa_add_cpu(unsigned int cpu) { } static inline void numa_add_cpu(unsigned int cpu) { }
static inline void numa_remove_cpu(unsigned int cpu) { } static inline void numa_remove_cpu(unsigned int cpu) { }
static inline void set_cpuid_to_node(int cpuid, s16 node) { }
static inline int early_cpu_to_node(int cpu) static inline int early_cpu_to_node(int cpu)
{ {
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
.macro JUMP_VIRT_ADDR temp1 temp2 .macro JUMP_VIRT_ADDR temp1 temp2
li.d \temp1, CACHE_BASE li.d \temp1, CACHE_BASE
pcaddi \temp2, 0 pcaddi \temp2, 0
or \temp1, \temp1, \temp2 bstrins.d \temp1, \temp2, (DMW_PABITS - 1), 0
jirl zero, \temp1, 0xc jirl zero, \temp1, 0xc
.endm .endm
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
_head: _head:
.word MZ_MAGIC /* "MZ", MS-DOS header */ .word MZ_MAGIC /* "MZ", MS-DOS header */
.org 0x8 .org 0x8
.dword kernel_entry /* Kernel entry point */ .dword _kernel_entry /* Kernel entry point (physical address) */
.dword _kernel_asize /* Kernel image effective size */ .dword _kernel_asize /* Kernel image effective size */
.quad PHYS_LINK_KADDR /* Kernel image load offset from start of RAM */ .quad PHYS_LINK_KADDR /* Kernel image load offset from start of RAM */
.org 0x38 /* 0x20 ~ 0x37 reserved */ .org 0x38 /* 0x20 ~ 0x37 reserved */
......
...@@ -282,7 +282,7 @@ static void __init fdt_setup(void) ...@@ -282,7 +282,7 @@ static void __init fdt_setup(void)
return; return;
/* Prefer to use built-in dtb, checking its legality first. */ /* Prefer to use built-in dtb, checking its legality first. */
if (!fdt_check_header(__dtb_start)) if (IS_ENABLED(CONFIG_BUILTIN_DTB) && !fdt_check_header(__dtb_start))
fdt_pointer = __dtb_start; fdt_pointer = __dtb_start;
else else
fdt_pointer = efi_fdt_pointer(); /* Fallback to firmware dtb */ fdt_pointer = efi_fdt_pointer(); /* Fallback to firmware dtb */
...@@ -351,10 +351,8 @@ void __init platform_init(void) ...@@ -351,10 +351,8 @@ void __init platform_init(void)
arch_reserve_vmcore(); arch_reserve_vmcore();
arch_reserve_crashkernel(); arch_reserve_crashkernel();
#ifdef CONFIG_ACPI_TABLE_UPGRADE
acpi_table_upgrade();
#endif
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
acpi_table_upgrade();
acpi_gbl_use_default_register_widths = false; acpi_gbl_use_default_register_widths = false;
acpi_boot_table_init(); acpi_boot_table_init();
#endif #endif
......
...@@ -273,7 +273,6 @@ static void __init fdt_smp_setup(void) ...@@ -273,7 +273,6 @@ static void __init fdt_smp_setup(void)
if (cpuid == loongson_sysconf.boot_cpu_id) { if (cpuid == loongson_sysconf.boot_cpu_id) {
cpu = 0; cpu = 0;
numa_add_cpu(cpu);
} else { } else {
cpu = cpumask_next_zero(-1, cpu_present_mask); cpu = cpumask_next_zero(-1, cpu_present_mask);
} }
...@@ -283,6 +282,9 @@ static void __init fdt_smp_setup(void) ...@@ -283,6 +282,9 @@ static void __init fdt_smp_setup(void)
set_cpu_present(cpu, true); set_cpu_present(cpu, true);
__cpu_number_map[cpuid] = cpu; __cpu_number_map[cpuid] = cpu;
__cpu_logical_map[cpu] = cpuid; __cpu_logical_map[cpu] = cpuid;
early_numa_add_cpu(cpu, 0);
set_cpuid_to_node(cpuid, 0);
} }
loongson_sysconf.nr_cpus = num_processors; loongson_sysconf.nr_cpus = num_processors;
...@@ -468,6 +470,7 @@ void smp_prepare_boot_cpu(void) ...@@ -468,6 +470,7 @@ void smp_prepare_boot_cpu(void)
set_cpu_possible(0, true); set_cpu_possible(0, true);
set_cpu_online(0, true); set_cpu_online(0, true);
set_my_cpu_offset(per_cpu_offset(0)); set_my_cpu_offset(per_cpu_offset(0));
numa_add_cpu(0);
rr_node = first_node(node_online_map); rr_node = first_node(node_online_map);
for_each_possible_cpu(cpu) { for_each_possible_cpu(cpu) {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define PAGE_SIZE _PAGE_SIZE #define PAGE_SIZE _PAGE_SIZE
#define RO_EXCEPTION_TABLE_ALIGN 4 #define RO_EXCEPTION_TABLE_ALIGN 4
#define PHYSADDR_MASK 0xffffffffffff /* 48-bit */
/* /*
* Put .bss..swapper_pg_dir as the first thing in .bss. This will * Put .bss..swapper_pg_dir as the first thing in .bss. This will
...@@ -142,10 +143,11 @@ SECTIONS ...@@ -142,10 +143,11 @@ SECTIONS
#ifdef CONFIG_EFI_STUB #ifdef CONFIG_EFI_STUB
/* header symbols */ /* header symbols */
_kernel_asize = _end - _text; _kernel_entry = ABSOLUTE(kernel_entry & PHYSADDR_MASK);
_kernel_fsize = _edata - _text; _kernel_asize = ABSOLUTE(_end - _text);
_kernel_vsize = _end - __initdata_begin; _kernel_fsize = ABSOLUTE(_edata - _text);
_kernel_rsize = _edata - __initdata_begin; _kernel_vsize = ABSOLUTE(_end - __initdata_begin);
_kernel_rsize = ABSOLUTE(_edata - __initdata_begin);
#endif #endif
.gptab.sdata : { .gptab.sdata : {
......
...@@ -41,7 +41,7 @@ static efi_status_t exit_boot_func(struct efi_boot_memmap *map, void *priv) ...@@ -41,7 +41,7 @@ static efi_status_t exit_boot_func(struct efi_boot_memmap *map, void *priv)
unsigned long __weak kernel_entry_address(unsigned long kernel_addr, unsigned long __weak kernel_entry_address(unsigned long kernel_addr,
efi_loaded_image_t *image) efi_loaded_image_t *image)
{ {
return *(unsigned long *)(kernel_addr + 8) - VMLINUX_LOAD_ADDRESS + kernel_addr; return *(unsigned long *)(kernel_addr + 8) - PHYSADDR(VMLINUX_LOAD_ADDRESS) + kernel_addr;
} }
efi_status_t efi_boot_kernel(void *handle, efi_loaded_image_t *image, efi_status_t efi_boot_kernel(void *handle, efi_loaded_image_t *image,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment