Tuesday, August 28, 2018

[fedora-arm] Re: F28 on odroid XU4

Hello Vince,

Thanks for the work you've done to get 8 cores working on the Odroid-XU4.  Here is the output you asked of Andreas from my XU4 running the latest fedora kernel:

[root@myodroid-wireless ~]# uname -a
Linux myodroid-wireless 4.17.18-200.fc28.armv7hl #1 SMP Wed Aug 22 20:36:45 UTC 2018 armv7l armv7l armv7l GNU/Linux
[root@myodroid-wireless ~]#
[root@myodroid-wireless ~]# lsusb -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 5000M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 1: Dev 4, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/2p, 480M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 2: Dev 6, If 0, Class=Hub, Driver=hub/4p, 12M
                    |__ Port 4: Dev 9, If 2, Class=Human Interface Device, Driver=usbhid, 12M
                    |__ Port 4: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 12M
                    |__ Port 4: Dev 9, If 1, Class=Human Interface Device, Driver=usbhid, 12M
                    |__ Port 2: Dev 8, If 1, Class=Wireless, Driver=btusb, 12M
                    |__ Port 2: Dev 8, If 0, Class=Wireless, Driver=btusb, 12M
                    |__ Port 1: Dev 7, If 2, Class=Human Interface Device, Driver=usbhid, 12M
                    |__ Port 1: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 12M
                    |__ Port 1: Dev 7, If 1, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=rtl8192cu, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M

Also, here is some other output of interest:

[root@myodroid-wireless ~]# cpupower frequency-info
analyzing CPU 0:
  driver: cpufreq-dt
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 154 us
  hardware limits: 200 MHz - 1.30 GHz
  available frequency steps:  200 MHz, 300 MHz, 400 MHz, 500 MHz, 600 MHz, 700 MHz, 800 MHz, 900 MHz, 1000 MHz, 1.10 GHz, 1.20 GHz, 1.30 GHz
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil
  current policy: frequency should be within 200 MHz and 1.30 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency: 700 MHz (asserted by call to hardware)


[root@myodroid-wireless ~]# cpupower frequency-info --governors
analyzing CPU 0:
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil
[root@myodroid-wireless ~]# cpupower frequency-set --governor performance
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
[root@myodroid-wireless ~]# cpupower frequency-info
analyzing CPU 0:
  driver: cpufreq-dt
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0 1 2 3
  maximum transition latency: 154 us
  hardware limits: 200 MHz - 1.30 GHz
  available frequency steps:  200 MHz, 300 MHz, 400 MHz, 500 MHz, 600 MHz, 700 MHz, 800 MHz, 900 MHz, 1000 MHz, 1.10 GHz, 1.20 GHz, 1.30 GHz
  available cpufreq governors: conservative userspace powersave ondemand performance schedutil
  current policy: frequency should be within 200 MHz and 1.30 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: 1.30 GHz (asserted by call to hardware)


[root@myodroid-wireless ~]# lscpu
Architecture:        armv7l
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  1
Core(s) per socket:  4
Socket(s):           2
Vendor ID:           ARM
Model:               3
Model name:          Cortex-A7
Stepping:            r0p3
CPU max MHz:         1800.0000
CPU min MHz:         200.0000
BogoMIPS:            78.00
Flags:               half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae


[root@myodroid-wireless ~]# dmesg
[    0.000000] Booting Linux on physical CPU 0x100
[    0.000000] Linux version 4.17.18-200.fc28.armv7hl (mockbuild@buildvm-armv7-06.arm.fedoraproject.org) (gcc version 8.1.1 20180712 (Red Hat 8.1.1-5) (GCC)) #1 SMP Wed Aug 22 20:36:45 UTC 2018
[    0.000000] CPU: ARMv7 Processor [410fc073] revision 3 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Hardkernel Odroid XU4
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 192 MiB at 0xb2800000
[    0.000000] Samsung CPU ID: 0xe5422001
[    0.000000] On node 0 totalpages: 518656
[    0.000000]   Normal zone: 1728 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 196608 pages, LIFO batch:31
[    0.000000]   HighMem zone: 322048 pages, LIFO batch:31
[    0.000000] Running under secure firmware.
[    0.000000] random: fast init done
[    0.000000] percpu: Embedded 16 pages/cpu @(ptrval) s34572 r8192 d22772 u65536
[    0.000000] pcpu-alloc: s34572 r8192 d22772 u65536 alloc=16*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516928
[    0.000000] Kernel command line: ro rd.driver.pre=ledtrig-heartbeat,xhci-plat-hcd root=UUID=d4a4b86d-5e86-4bcb-b79c-2bde6831b7c5 cma=192MB cpuidle.off=1 LANG=en_US.UTF-8 no_bL_switcher
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 1822580K/2074624K available (8168K kernel code, 1328K rwdata, 3920K rodata, 2048K init, 505K bss, 55436K reserved, 196608K cma-reserved, 1091584K highmem)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
                   lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
                   pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                   modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                     .text : 0x(ptrval) - 0x(ptrval)   (9161 kB)
                     .init : 0x(ptrval) - 0x(ptrval)   (2048 kB)
                     .data : 0x(ptrval) - 0x(ptrval)   (1329 kB)
                      .bss : 0x(ptrval) - 0x(ptrval)   ( 506 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] ftrace: allocating 37441 entries in 74 pages
[    0.000000] Hierarchical RCU implementation.
[    0.000000]     RCU restricting CPUs from NR_CPUS=32 to nr_cpu_ids=8.
[    0.000000]     Tasks RCU enabled.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] GIC physical location is 0x10481000
[    0.000000] Switching to timer-based delay loop, resolution 41ns
[    0.000000] clocksource: mct-frc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000007] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000033] genirq: irq_chip COMBINER did not update eff. affinity mask of irq 49
[    0.006905] Console: colour dummy device 80x30
[    0.007535] console [tty0] enabled
[    0.007603] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=24000)
[    0.007640] pid_max: default: 32768 minimum: 301
[    0.007903] Security Framework initialized
[    0.007927] Yama: becoming mindful.
[    0.007994] SELinux:  Initializing.
[    0.008199] SELinux:  Starting in permissive mode
[    0.008297] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.008335] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.009575] CPU: Testing write buffer coherency: ok
[    0.010559] CPU0: thread -1, cpu 0, socket 1, mpidr 80000100
[    0.011506] Setting up static identity map for 0x40300000 - 0x403000a0
[    0.012297] ARM CCI driver probed
[    0.012546] Exynos MCPM support installed
[    0.015526] Hierarchical SRCU implementation.
[    0.022460] EFI services will not be available.
[    0.023397] smp: Bringing up secondary CPUs ...
[    0.024680] CPU1: thread -1, cpu 1, socket 1, mpidr 80000101
[    0.026094] CPU2: thread -1, cpu 2, socket 1, mpidr 80000102
[    0.027452] CPU3: thread -1, cpu 3, socket 1, mpidr 80000103
[    0.028759] CPU4: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.030181] CPU5: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.031561] CPU6: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.032919] CPU7: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.033125] smp: Brought up 1 node, 8 CPUs
[    0.033262] SMP: Total of 8 processors activated (384.00 BogoMIPS).
[    0.033284] CPU: WARNING: CPU(s) started in wrong/inconsistent modes (primary CPU mode 0x1a)
[    0.033309] CPU: This may indicate a broken bootloader or firmware.


Note the following:
  • Although 8 cores are recognized, the "lscpu" command (and the "dmesg" snippet) recognizes only the A7 processor.
  • The default cpu governor is "ondemand" providing a cpu frequency of 700 MHz for all cores per the output of the first "cpupower frequency-info" above.
  • The cpu governor and frequency can be changed to "performance" and 1300 MHz, respectively by using the command "cpupower frequency-set --governor performance", but this is not persistent between reboots.  To make it persistent between reboots follow this procedure:  https://ask.fedoraproject.org/en/question/39964/how-to-permanently-set-cpu-power-management-to-the-powersave-governor
  • Note the last two lines in the "dmesg" command.  There may be additional code required in the bootloader or firmware to recognize the A15 processor correctly.  Does anyone have any ideas here?


Stewart



On 08/27/2018 01:41 AM, Vince Geze wrote:
    
-----Original Message-----  From: Andreas Reschke [mailto:arm_ml@rirasoft.de]  Sent: Saturday, August 25, 2018 11:50 AM  To: Vince Geze <vincegeze@gmail.com>  Cc: arm@lists.fedoraproject.org  Subject: Re: [fedora-arm] Re: F28 on odroid XU4        Am 24.08.2018 um 15:15 schrieb Vince Geze:  
  
-----Original Message-----  From: arm_ml@rirasoft.de [mailto:arm_ml@rirasoft.de]  Sent: Friday, August 24, 2018 2:45 PM  To: Vince Geze <vincegeze@gmail.com>  Cc: arm@lists.fedoraproject.org  Subject: Re: [fedora-arm] Re: F28 on odroid XU4    Am 2018-08-24 14:37, schrieb Vince Geze:  
-----Original Message-----  From: arm_ml@rirasoft.de [mailto:arm_ml@rirasoft.de]  Sent: Friday, August 24, 2018 2:27 PM  To: Vince Geze <vincegeze@gmail.com>  Cc: arm@lists.fedoraproject.org  Subject: Re: [fedora-arm] Re: F28 on odroid XU4    Am 2018-08-24 14:17, schrieb Vince Geze:  
-----Original Message-----  From: arm_ml@rirasoft.de [mailto:arm_ml@rirasoft.de]  Sent: Friday, August 24, 2018 1:39 PM  To: Vince Geze <vincegeze@gmail.com>  Cc: arm@lists.fedoraproject.org  Subject: Re: [fedora-arm] Re: F28 on odroid XU4    Am 2018-08-24 12:09, schrieb Vince Geze:  --snip--  
Well, after countless reboots it seems to be even more simple.  - USB3: preloading xhci-plat-hcd, which already is in the  initramfs, is sufficient to get proper USB3 operation and the  r8152 at full speed as well  - CPU HMP: this one I already knew was linked to the  CONFIG_BL_SWITCHER. On [1] it is mentioned there are both sysfs  and kernel boot options to control this behavior. The sysfs path  exists and with lscpu you can see all 8 cores being put online.  The kernel boot command however turned out to be incorrect, but  after some digging I found you only need "no_bL_switcher" as  boot  
option.  
Since the board will be used headless, I also enabled the  blinking led by preloading ledtrig-heartbeat, but this needs to  be included in a /etc/dracut.conf.d/ conf file with  
'add_drivers+="  
ledtrig-heartbeat "'. The blinking frequency also gives an  indication  
of  
the load.  
The final boot line now looks like this:  append ro rd.driver.pre=ledtrig-heartbeat,xhci-plat-hcd  root=UUID=your_UUID cpuidle.off=1 no_bL_switcher console=tty1  console=ttySAC2,115200n8    Result:  - systematically correct detection of USB3  - performance improvement by enabling all cpus  - indication whether the system is alive or not  - no need for recompiling kernels, only boot time options and an  optional dracut inclusion    Best regards,    Vince    [1]  https://wiki.linaro.org/projects/big.LITTLE.MP/Big.Little.Switch  er/  Doc  s/porting-guide  
_______________________________________________  
arm mailing list -- arm@lists.fedoraproject.org To unsubscribe  send an email to arm-leave@lists.fedoraproject.org Fedora Code  of  
Conduct:  
https://getfedora.org/code-of-conduct.html  List Guidelines:  https://fedoraproject.org/wiki/Mailing_list_guidelines  List Archives:    
https://lists.fedoraproject.org/archives/list/arm@lists.fedoraproject.  
org/message/Y7EMT5B5HYSV3SX533YZZHOOEOMRHNFZ/  
Hello Vince,    I must say thank you !    With your work I can enable all 8 CPUs on my Odroid HC1.    lscpu before:  [root@odroidh1 ~]# lscpu  Architektur:                   armv7l  Byte-Reihenfolge:              Little Endian  CPU(s):                        8  Liste der Online-CPU(s):       0-3  Liste der Offline-CPU(s):      4-7  Thread(s) pro Kern:            1  Kern(e) pro Socket:            4  Sockel:                        1    lscpu after:  Architektur:                   armv7l  Byte-Reihenfolge:              Little Endian  CPU(s):                        8  Liste der Online-CPU(s):       0-7  Thread(s) pro Kern:            1  Kern(e) pro Socket:            4  Sockel:                        2    Greetings  Andreas  
Hi Andreas,    Glad to hear it's working on your side as well. Could you also  check the number at the end of the r8152 line in lsusb -t with the  default boot line without preloads? Is it 480M or 5000M?    Best regards,    Vince  
System without your modifikation:    [root@odroidh1 ~]# lsusb -t  /:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M  /:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M        |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class,  Driver=r8152,  
480M  
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M        |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas,  5000M  /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M  /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p,  480M  /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p,  12M  [root@odroidh1 ~]#    System with your modifikation:    [root@odroidh2 ~]# lsusb -t  /:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M  /:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M        |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class,  Driver=r8152,  
480M  
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M        |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas,  5000M  /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M  /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p,  480M  /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p,  12M  [root@odroidh2 ~]#    Systems are identical: Odroid HC1 with update Fedora 28    Andreas  
Hi Andreas,    Looks like the storage is working at USB3 speed, but the Ethernet at  USB2.  Have you included the xhci preload at the modified boot line?    Best regards,    Vince  
Yes of course:  [root@odroidh2 ~]# cat /boot/extlinux/extlinux.conf # extlinux.conf  generated by appliance-creator ui menu.c32 menu autoboot Welcome to  Fedora-Minimal-armhfp-28-1.1. Automatic boot in # second{,s}. Press a  key for options.  menu title Fedora-Minimal-armhfp-28-1.1 Boot Options.  menu hidden  timeout 20  totaltimeout 600    default=Fedora (4.17.14-202.fc28.armv7hl) 28 (Twenty Eight) label  Fedora  (4.17.14-202.fc28.armv7hl) 28 (Twenty Eight)            kernel /vmlinuz-4.17.14-202.fc28.armv7hl            append ro rd.driver.pre=ledtrig-heartbeat,xhci-plat-hcd  root=UUID=cf0c90a1-25e4-429b-a77e-b9b4f3802258 cpuidle.off=1  LANG=de_DE.UTF-8 no_bL_switcher console=tty1 console=ttySAC2,1152  00n8            fdtdir /dtb-4.17.14-202.fc28.armv7hl/            initrd /initramfs-4.17.14-202.fc28.armv7hl.img    [root@odroidh2 ~]#    I've edit this line with the older kernel before I updated the system  this kernel.    Andreas  
Hi Andreas,    Have you removed power completely between reboots, meaning  
physically  
unplug power at board side for 5-10 seconds such that all leds are  dimmed? I have the impression not every component is fully or  correctly reset if you just do an init 6. It would be quite  interesting to know if that could be the issue with the r8152 driver,  since, except for the heartbeat, adding those options to the original  4.16 kernel of the F28 image without any dracut initramfs regeneration was  
sufficient on my device.  
  Best regards,    Vince    
  Hello Vince,  after newest kernel update and poweroff for 1 minute:    [root@odroidh2 ~]# lsusb -t  /:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M       |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M  /:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M  /:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M       |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M  /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M  /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=exynos-ehci/3p, 480M  /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=exynos-ohci/3p, 12M  [root@odroidh2 ~]# uname -a  Linux odroidh2.reschke.lan 4.17.17-200.fc28.armv7hl #1 SMP Mon Aug 20  17:31:32 UTC 2018 armv7l armv7l armv7l GNU/Linux  [root@odroidh2 ~]#    Greetings  Andreas  
  Hi Andreas,    Thanks for the feedback, looks like both storage and Ethernet are connected as USB3 now.  Out of curiosity, are you running from SD or eMMC? I'm still using SD for testing, but once I got everything covered I'd like to switch to eMMC.    Best regards,    Vince  _______________________________________________  arm mailing list -- arm@lists.fedoraproject.org  To unsubscribe send an email to arm-leave@lists.fedoraproject.org  Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html  List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines  List Archives: https://lists.fedoraproject.org/archives/list/arm@lists.fedoraproject.org  

No comments:

Post a Comment