On Mon, Jan 13, 2014 at 12:30 PM, Aurelien Jarno <aurelien@xxxxxxxxxxx> wrote: > On Mon, Jan 13, 2014 at 11:02:19AM +0800, Huacai Chen wrote: >> On Sat, Jan 11, 2014 at 11:24 PM, Aurelien Jarno <aurelien@xxxxxxxxxxx> wrote: >> > On Thu, Jan 09, 2014 at 01:07:30PM +0000, Alex Smith wrote: >> >> On 08/01/14 02:44, Huacai Chen wrote: >> >> >Added Kconfig options include: Loongson-3 CPU and machine definition, >> >> >CPU cache features, UEFI-like firmware interface (LEFI), HT-linked PCI, >> >> >and big memory support. >> >> > >> >> >Signed-off-by: Huacai Chen <chenhc@xxxxxxxxxx> >> >> >Signed-off-by: Hongliang Tao <taohl@xxxxxxxxxx> >> >> >Signed-off-by: Hua Yan <yanh@xxxxxxxxxx> >> >> >--- >> >> > arch/mips/Kconfig | 29 +++++++++++++++++++++++++++- >> >> > arch/mips/loongson/Kconfig | 44 +++++++++++++++++++++++++++++++++++++++++++ >> >> > arch/mips/loongson/Platform | 1 + >> >> > 3 files changed, 73 insertions(+), 1 deletions(-) >> >> > >> >> >diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig >> >> >index 17cc7ff..513e941 100644 >> >> >--- a/arch/mips/Kconfig >> >> >+++ b/arch/mips/Kconfig >> >> >@@ -1487,6 +1487,18 @@ config CPU_LOONGSON2 >> >> > select CPU_SUPPORTS_HIGHMEM >> >> > select CPU_SUPPORTS_HUGEPAGES >> >> > >> >> >+config CPU_LOONGSON3 >> >> >+ bool "Loongson 3 CPU" >> >> >+ depends on SYS_HAS_CPU_LOONGSON3 >> >> >+ select CPU_SUPPORTS_64BIT_KERNEL >> >> >+ select CPU_SUPPORTS_HIGHMEM >> >> >+ select CPU_SUPPORTS_HUGEPAGES >> >> >+ select WEAK_ORDERING >> >> >+ select WEAK_REORDERING_BEYOND_LLSC >> >> >+ help >> >> >+ The Loongson 3 processor implements the MIPS III instruction set >> >> >+ with many extensions. >> >> >+ >> >> >> >> This should be moved into the "CPU type" choice block. Currently >> >> this appears as an option outside of that choice, and so it is >> >> possible to build a kernel without any CPU type selected. >> >> >> >> Also, as Aurelien said on the previous version, shouldn't the >> >> comment be changed to MIPS64R2 rather than MIPS III even if you >> >> aren't selecting the MIPS64 CPU types for the time being? Note, if >> >> you replied to that comment I may not have seen it - I think the >> >> list is filtering your replies because they're HTML emails. >> >> >> >> > config CPU_LOONGSON1 >> >> > bool >> >> > select CPU_MIPS32 >> >> >@@ -1513,6 +1526,10 @@ config SYS_HAS_CPU_LOONGSON2F >> >> > select CPU_SUPPORTS_ADDRWINCFG if 64BIT >> >> > select CPU_SUPPORTS_UNCACHED_ACCELERATED >> >> > >> >> >+config SYS_HAS_CPU_LOONGSON3 >> >> >+ bool >> >> >+ select CPU_SUPPORTS_CPUFREQ >> >> >+ >> >> > config SYS_HAS_CPU_LOONGSON1B >> >> > bool >> >> > >> >> >@@ -1703,7 +1720,7 @@ choice >> >> > >> >> > config PAGE_SIZE_4KB >> >> > bool "4kB" >> >> >- depends on !CPU_LOONGSON2 >> >> >+ depends on !CPU_LOONGSON2 && !CPU_LOONGSON3 >> >> > help >> >> > This option select the standard 4kB Linux page size. On some >> >> > R3000-family processors this is the only available page size. Using >> >> >@@ -2373,6 +2390,16 @@ config PCI >> >> > your box. Other bus systems are ISA, EISA, or VESA. If you have PCI, >> >> > say Y, otherwise N. >> >> > >> >> >+config HT_PCI >> >> >+ bool "Support for HT-linked PCI" >> >> >+ depends on CPU_LOONGSON3 >> >> >+ select PCI_DOMAINS >> >> >+ help >> >> >+ Loongson family machines use Hyper-Transport bus for inter-core >> >> >+ connection and device connection. The PCI bus is a subordinate >> >> >+ linked at HT. Choose Y unless you are using Loongson 2E/2F based >> >> >+ machines. >> >> >+ >> >> >> >> Should this default to y, given that it is selected in the >> >> defconfig? Also, the comment referring to 2E/2F is redundant given >> >> that it depends on CPU_LOONGSON3 and cannot be selected on those >> >> machines. >> > >> > I am still not sure we need such an option. This option only changes an >> > address in arch/mips/include/asm/mach-loongson/loongson.h: >> > >> > | #if defined(CONFIG_HT_PCI) >> > | #define LOONGSON_PCIIO_BASE loongson_sysconf.pci_io_base >> > | #else >> > | #define LOONGSON_PCIIO_BASE 0x1fd00000 >> > | #endif >> > >> > If both options are working on a Loongson 3 machine, it's definitely a >> > good idea to leave the choice to the user. That said if only the address >> > from loongson_sysconf.pci_io_base works on a Loongson 3 machine, this >> > option must always be selected and is therefore useless. >> HT_PCI is needed, because Loongson-3 device structure looks like this: >> Loongson3-Core ----- ---- MEM >> |--- Cache ---| >> HT1-controller ------- ---- PCI-Controller --- PCI-Devices (PATH-B) >> | >> | >> PCI-Controller >> | >> | >> PCI-Devices (PATH-A) >> >> If PCI devices are linked via PATH-A, we should select HT_PCI; >> otherwise we should unselected HT_PCI. > > Thanks for the explanation, it looks now more clear why we need this > option. Both cases are valid, it just depends on where the PCI > controller is connected. > > That said it means that we won't be able to use the same kernel on > machines using the PATH-A and on machines using the PATH-B. Is there > a way to determine this at runtime through LEFI? At present we can't determine PATH-A/B through LEFI, and LEFI is surely need to extend at some time. Most of machines use PATH-A, since in this way DMA coherency is maintained by hardware. If use PATH-B, both HT_PCI and LEFI should be disabled. > > Aurelien > > -- > Aurelien Jarno GPG: 1024D/F1BCDB73 > aurelien@xxxxxxxxxxx http://www.aurel32.net >