Received: by 10.213.65.68 with SMTP id h4csp1039645imn; Wed, 21 Mar 2018 00:38:28 -0700 (PDT) X-Google-Smtp-Source: AG47ELv0QncdbEep3EtI70cO7kAnoh5A2RcXF12HLzIX1/H8hK//Plkuj+RTI6pRUKSGOTYBoh23 X-Received: by 10.99.140.77 with SMTP id q13mr1418554pgn.44.1521617908009; Wed, 21 Mar 2018 00:38:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521617907; cv=none; d=google.com; s=arc-20160816; b=zYkF8KTfuOfH92TfGazFbTNptIy6VL3lmafoJBtUqJs6TrjjNUg+c88+Zal9vaOV49 0zhb64QBs43O/6VWWZbS/e2zXnQ0ZaHgEzbHAziHx0LOcAb0kpn/YxtGNjqVbuKm2vaj PW4WMVp1qnYUZjdkhdXbTktXn7Bm12kM6NV47LEICAsRnPvHT89UHeQfE+ZDBfM4RJ26 4fDPciTTaDleu34J711k0wNVuflpllqBlgv6bkmFmJjRC8mVCetmHXRN7qWGbpOMMdPv 51Iq0bJVOczdxozA+PI930h5R/nee0vb0rbkkYG5LmtH5LkNn3GMEjFVFLvkyEPE+D0L zy/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=Tnif90pN5LdL7DxNxSurp85Uooa/nlezZ7UkScgILXM=; b=Dwkjx8w9iZOzQnwa+ZmpPkf+bgPyfOt7G8mTH8AUX0iNK7F9pzzdrbLt9vhNoWd2lF IEat07X4KbLtX1A2/ggxrwmGv5w6HOPuPFE2HHEVgbIQdEqJHU678tKSF7N9KNENfokc D9L+6wxSEPXGD9AsQVLO4hkzqi+qpvKwr+jsDKdzwjPIQyEwHixQV3bwFHYPYg/ZCIrm c4OjdOPhtIGj3oG5BsBA6X6ObVtc+vWoirMJJ3J5mqzfgE1Sda/TEGbwZuISfCB60Dyh cgaX6BudPSlfXyhuy74ERqKKofWGVyBm2K6Op9aBdOJDLa+liC/T+w6GHcC1/ZzxyF9f Pdvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=oaj8noV2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x10si2515037pfd.62.2018.03.21.00.38.14; Wed, 21 Mar 2018 00:38:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=oaj8noV2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751825AbeCUHgu (ORCPT + 99 others); Wed, 21 Mar 2018 03:36:50 -0400 Received: from mail-io0-f195.google.com ([209.85.223.195]:44199 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751396AbeCUHgp (ORCPT ); Wed, 21 Mar 2018 03:36:45 -0400 Received: by mail-io0-f195.google.com with SMTP id h23so5474359iob.11; Wed, 21 Mar 2018 00:36:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Tnif90pN5LdL7DxNxSurp85Uooa/nlezZ7UkScgILXM=; b=oaj8noV2pk1n0fBAGLIJV9gFAiaLsrl7Oz5uNwcaUnMHTMmibbltVwZ3tGzUTBpwSf hWDpCAg8JnhqYop5y6lelE3Dm3DrX7FlaAPZaMU2E6HbVIRfwGQoJxMxlH7iisvW2SNA uU3sDIiVJZe1MdpjnQW+BxOzfwwB0PfDCyMvUlVuoRZ9ieblq34x/R5j2KrjqAH0FFBY LKpOVFifCRyozLvxnjNUshOwnnENGfugOIxC1TYxdNR5f4SGCrGzLsJsoy4TLjaAI2rI DMJCaTd4J9+iFifmpGA8f/kuz2EAE3szHQSUCTJIIU2Ew3Qq1kswpenRHuOfdZQe2DY/ QAqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=Tnif90pN5LdL7DxNxSurp85Uooa/nlezZ7UkScgILXM=; b=ovcmN7+95KiZ9O00FtU6SO1Q4W5GLUrhYJja4pyP+ex25HT5HM63HgqQnAVPv3hqCP Jod56OL+N5NMKD92/dWa2ung8W39MUqy2lxsKPlZ77sToqh7CUnWj+Czv0+HbJJJzA8g JpXvzAMa6lvMiCZWiwf38C6MqBRjXE1tdCd2gHZ8UgXvzlevYFuwO8+U3G6bVFLWX8z7 SdP+BQzeA+YjrCIZ6ONfBeh8mdryLkhotM+o+5NVqS+jmY1pUIMCOS9hRLNAB0uxhPhx K4br2rIq1Kn9L97IERNOhBTioiTxS9tDO9mk2ArnsQsRZ8e3mUbLXQK5QQm4kA2zZSUY 1tuA== X-Gm-Message-State: AElRT7E2ByBJpXQL4xWNiTxWVRemnbkrJqb6AU+1ZUdyubOUWzJp6oc6 JGg2MDTeRFxXNAyf6G+P8eVE8BOrKnG4K2AcGhk= X-Received: by 10.107.10.99 with SMTP id u96mr20529912ioi.152.1521617804312; Wed, 21 Mar 2018 00:36:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.34.71 with HTTP; Wed, 21 Mar 2018 00:36:43 -0700 (PDT) In-Reply-To: <20180320131342.GA31542@guoren> References: <20180320131342.GA31542@guoren> From: Arnd Bergmann Date: Wed, 21 Mar 2018 15:36:43 +0800 X-Google-Sender-Auth: OFcZf1W-9aQ8bJcQOWm2WW8QJyQ Message-ID: Subject: Re: [PATCH 15/19] csky: Build infrastructure To: Guo Ren Cc: linux-arch , Linux Kernel Mailing List , Thomas Gleixner , Daniel Lezcano , Jason Cooper , c-sky_gcc_upstream@c-sky.com, gnu-csky@mentor.com, thomas.petazzoni@bootlin.com, wbx@uclibc-ng.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 20, 2018 at 9:13 PM, Guo Ren wrote: > Hi arnd, > > On Mon, Mar 19, 2018 at 11:45:23PM +0800, Arnd Bergmann wrote: >> Does your architecture provide a reliable high-reslution clocksource? >> If yes, you >> could use that for the delay, rather than a calibrated loop. > Currently, all boards have clocksource drivers and the reslution is depend on SOC. > I'll try to remove it. If the clocksource depends on a driver rather than a feature of the architecture, this may not be worth optimizing though, so maybe leave it as it is for now. >> Usually the kernel should allow multiple CPU types to be selected >> together, or ask for a "minimum architecture" level to be selected >> by allow newer cores to be used as a superset. > No, I need keep them seperate. Can you explain? What is it that makes them all incompatible? >> > +config CPU_TLB_SIZE >> > + int >> > + default "128" if(CPU_CK610 || CPU_CK807 || CPU_CK810) >> > + default "1024" if(CPU_CK860) >> > + >> > +config L1_CACHE_SHIFT >> > + int >> > + default "4" if(CPU_CK610) >> > + default "5" if(CPU_CK807 || CPU_CK810) >> > + default "6" if(CPU_CK860) >> >> I think you then need to reverse the order of the list here: When e.g. CK860 >> and CK810 are both enabled, L1_CACHE_SHIFT should be the largest >> possible size. > No, I use L1_CACHE_SHIFT to determine the size of cache_line. > When I flush cache for a range of memory, I need the size to loop flush cache line. This is still relatively easy to fix, you just need a cpu specific loop that uses the actual line size rather than the maximum size. >> > +config SSEG0_BASE >> > + hex "Direct mapping physical address" >> > + default 0x0 >> > + help >> > + There are MSAx regs can be used to change the base physical address >> > + of direct mapping. The default base physical address is 0x0. >> > + >> > +config RAM_BASE >> > + hex "DRAM base address offset from SSEG0_BASE, it must be the same with dts memory." >> > + default 0x08000000 >> >> To allow one kernel to run on multiple boards, it's better to detect >> these two at runtime. > CK-CPUs have a mips-like direct-mapping, and I use the macros to calculate the virtual-addr > in headers. On many architectures, we detect the offsets at boot time and pass them as variables. On ARM, we go as far as patching the kernel at boot time to have constant offsets, but usually it's not worth the effort. >> > +config CSKY_NR_IRQS >> > + int "NR_IRQS to max virtual interrupt numbers of the whole system" >> > + range 64 8192 >> > + default "128" >> > +endmenu >> >> This should no longer be needed, with the IRQ domain code, any number >> of interrupts >> can be used without noticeable overhead. > Not I use it, some of our users need it to expand the GPIO irqs. Because > they don't use irq domain code properly. I move it to Kconfig.debug, OK? It sounds like your GPIO driver should get fixed to use irq domains right, it should not be too hard. The number of GPIOs is typically a compile time constant today, but we also try to turn it into a dynamic allocation that we have for IRQs on most targets. >> > +config CSKY_BUILTIN_DTB >> > + bool "Use kernel builtin dtb" >> > + default n >> > + >> > +config CSKY_BUILTIN_DTB_NAME >> > + string "kernel builtin dtb name" >> > + depends on CSKY_BUILTIN_DTB >> >> It's generally better not to use a builtin dtb, but use the bootloader >> to pass a dtb. >> >> If you need to support existing bootloaders, the best way is to allow >> appending the dtb to the kernel. > Most of our boards use bootloader to pass the dtb, but Hangzhou > Nationalchip want dtb compiled in the vmlinux. So I keep it in > Kconfig.debug. What I meant here is that you can get the same behavior by appending the dtb to the kernel rather than linking it into the kernel. The reason for preferring the appended one is that you can more easily use the same kernel binary across boards with different bootloaders. >> > +ifeq ($(VERSION)_$(PATCHLEVEL), 4_9) >> > +COMPAT_KERNEL_4_9 = -DCOMPAT_KERNEL_4_9 >> > +endif >> >> Should not be needed > May I keep it? It's a very internal macro for arch/csky and I can > maintain the linux-4.9 together. I'd say it's better to get rid of it for the upstream port, more importantly getting rid of the code that checks for this symbol. Usually what happens with version checks like this one is that they get out of sync quickly as a new kernel version does things differently and diverges more from the old release you were comparing against. In device drivers, we tend to remove all those checks. >> -fno-tree-dse? > This is from "gcc-4.5 compile linux-4.7" and it will cause wrong code without > -fno-tree-dse for list.h. Now we use gcc-6.3, so I will try to remove it. You can also use the cc-ifversion Makefile macro to apply it on the old compiler. That way you can still use gcc-4.5 as long as that remains relevant but don't get worse code generation on modern versions. >> > +++ b/arch/csky/abiv1/Makefile >> > @@ -0,0 +1,8 @@ >> > +obj-y += src/bswapdi.o >> > +obj-y += src/bswapsi.o >> > +obj-y += src/cacheflush.o >> > +obj-y += src/memcpy.o >> > +obj-y += src/mmap.o >> > + >> > +obj-$(CONFIG_CPU_NEED_SOFTALIGN) += src/alignment.o >> >> Better not use subdirectories like that. > Ok, I will change them like this: > obj-y += bswapdi.o > obj-y += bswapsi.o > ... > >> Can you explain why you need the alignement fixups? > For abiv1 ck610 couldn't handle the unalignment address access, so we > need soft-alignment exception to fixup. There is no problem in abiv2 cpus. Ok. Generally speaking, architectures that don't allow unaligned access should have all code built in a way that uses aligned access (gcc normally falls back to byte access when it encounters an unaligned pointer at compile time), but if this is just for old CPUs that are not used in future products, having the fixup does sound simpler, as it allows you to still run new binaries on the old machines. I haven't looked at the implementation for the fixup here, but I remember the same thing from the nds32 port. In that case, we ended up keeping the fixup as an option for old user space, but disabled to softalign fixups for kernel code. Can you do the same thing here? Arnd