Bug 25618 - Mageia kernel does not boot on a Banan Pro ARM; enable serial option?
Summary: Mageia kernel does not boot on a Banan Pro ARM; enable serial option?
Status: RESOLVED FIXED
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: 7
Hardware: armv7hl Linux
Priority: Normal normal
Target Milestone: ---
Assignee: Kernel and Drivers maintainers
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-10-26 23:48 CEST by Jybz
Modified: 2019-11-15 23:36 CET (History)
1 user (show)

See Also:
Source RPM: kernel-desktop
CVE:
Status comment:


Attachments
Log uboot, boot, root login, rpm -qa --last, poweroff (66.22 KB, text/plain)
2019-11-11 22:02 CET, Jybz
Details
log : boot, root, ifconfig -a, poweroff (47.62 KB, text/plain)
2019-11-12 21:20 CET, Jybz
Details

Description Jybz 2019-10-26 23:48:22 CEST
For the port of Mageia on a Banana Pro, I saw that the default kernel configuration boot and the kernel from Mageia.Org doesn't seem to boot.

After a small comparison between our kernel configuration
http://svnweb.mageia.org/packages/updates/7/kernel/current/SOURCES/defconfig-arm-desktop?view=markup
and the default sunxi configuration which boots
https://github.com/torvalds/linux/blob/master/arch/arm/configs/sunxi_defconfig
I could see for main differences, what is defined in the sunxi_defconfig and not on Mageia's kernel :

```
  CONFIG_ROOT_NFS=y               If you want your system to mount its root file system via NFS, choose Y here.
  CONFIG_CPU_FREQ=y               CPU Frequency scaling allows you to change the clock speed of CPUs on the fly. This is a nice method to save power, because the lower the CPU clock speed, the less power the CPU consumes.
  CONFIG_CPUFREQ_DT=y             This adds a generic DT based cpufreq driver for frequency management. It supports both uniprocessor (UP) and symmetric multiprocessor (SMP) systems.
  CONFIG_IP_PNP=y                 This enables automatic configuration of IP addresses of devices and of the routing table during kernel boot, based on either information supplied on the kernel command line or by BOOTP or RARP protocols. You need to say Y only for diskless machines requiring network access to boot (in which case you want to say Y to "Root file system on NFS" as well), because all other machines configure the network in their startup scripts.
  CONFIG_IP_PNP_DHCP=y            If you want your Linux box to mount its whole root file system (the one containing the directory /) from some other computer over the net via NFS and you want the IP address of your computer to be discovered automatically at boot time using the DHCP protocol (a special protocol designed for doing this job), say Y here. In case the boot ROM of your network card was designed for booting Linux and does DHCP itself, providing all necessary information on the kernel command line, you can say N here.
  CONFIG_IP_PNP_BOOTP=y           If you want your Linux box to mount its whole root file system (the one containing the directory /) from some other computer over the net via NFS and you want the IP address of your computer to be discovered automatically at boot time using the BOOTP protocol (a special protocol designed for doing this job), say Y here. In case the boot ROM of your network card was designed for booting Linux and does BOOTP itself, providing all necessary information on the kernel command line, you can say N here.
  CONFIG_CAN=y                    Controller Area Network (CAN) is a slow (up to 1Mbit/s) serial communications protocol. Development of the CAN bus started in 1983 at Robert Bosch GmbH, and the protocol was officially released in 1986. The CAN bus was originally mainly for automotive, but is now widely used in marine (NMEA2000), industrial, and medical applications. More information on the CAN network protocol family PF_CAN is contained in <Documentation/networking/can.rst>.
M CONFIG_CAN_SUN4I=y              Say Y here if you want to use CAN controller found on Allwinner A10/A20 SoCs. To compile this driver as a module, choose M here: the module will be called sun4i_can.
  CONFIG_STMMAC_ETH=y             This is the driver for the Ethernet IPs built around a Synopsys IP Core.
  CONFIG_SERIAL_8250_DW=y         Selecting this option will enable handling of the extra features present in the Synopsys DesignWare APB UART.
  CONFIG_SERIAL_OF_PLATFORM=y     This option is used for all 8250 compatible serial ports that are probed through devicetree, including Open Firmware based PowerPC systems and embedded systems on architectures using the flattened device tree format.
M CONFIG_I2C_MV64XXX=y            If you say yes to this option, support will be included for the built-in I2C interface on the Marvell 64xxx line of host bridges. This driver is also used for Allwinner SoCs I2C controllers. This driver can also be built as a module. If so, the module will be called i2c-mv64xxx.
  CONFIG_CPU_THERMAL=y            This implements the generic cpu cooling mechanism through frequency reduction. An ACPI version of this already exists (drivers/acpi/processor_thermal.c). This will be useful for platforms using the generic thermal interface and not the ACPI interface.
M CONFIG_SUNXI_WATCHDOG=y         Say Y here to include support for the watchdog timer in Allwinner SoCs. To compile this driver as a module, choose M here: the module will be called sunxi_wdt.
  CONFIG_MFD_AC100=y              If you say Y here you get support for the X-Powers AC100 audio codec IC. This driver include only the core APIs. You have to select individual components like codecs or RTC under the corresponding menus.
  CONFIG_REGULATOR_GPIO=y         This driver provides support for regulators that can be controlled via gpios. It is capable of supporting current and voltage regulators and the platform has to provide a mapping of GPIO-states to target volts/amps.
  CONFIG_RC_CORE=y                Enable support for Remote Controllers on Linux. This is needed in order to support several video capture adapters, standalone IR receivers/transmitters, and RF receivers.
  CONFIG_RC_DEVICES=y             (none)
  CONFIG_DRM_DUMB_VGA_DAC=y       Support for non-programmable RGB to VGA DAC bridges, such as ADI ADV7123, TI THS8134 and THS8135 or passive resistor ladder DACs.
  CONFIG_USB_EHCI_HCD_PLATFORM=y  Adds an EHCI host driver for a generic platform device, which provides a memory space and an irq.
  CONFIG_USB_OHCI_HCD_PLATFORM=y  Adds an OHCI host driver for a generic platform device, which provides a memory space and an irq.
  CONFIG_USB_GADGET=y             USB is a master/slave protocol, organized with one master host (such as a PC) controlling up to 127 peripheral devices. The USB hardware is asymmetric, which makes it easier to set up: you can't connect a "to-the-host" connector to a peripheral.
  CONFIG_LEDS_GPIO=y              This option enables support for the LEDs connected to GPIO outputs. To be useful the particular board must have LEDs and they must be connected to the GPIO lines. The LEDs must be defined as platform devices and/or OpenFirmware platform devices. The code to use these bindings can be selected below.
M CONFIG_RTC_DRV_AC100=y          If you say yes here you get support for the real-time clock found in X-Powers AC100 family peripheral ICs. This driver can also be built as a module. If so, the module will be called rtc-ac100.

  CONFIG_MFD_AXP20X_I2C=y         If you say Y here you get support for the X-Powers AXP series power management ICs (PMICs) controlled with I2C. This driver include only the core APIs. You have to select individual components like regulators or the PEK (Power Enable Key) under the corresponding menus.
  CONFIG_MFD_AXP20X_RSB=y         If you say Y here you get support for the X-Powers AXP series power management ICs (PMICs) controlled with RSB. This driver include only the core APIs. You have to select individual components like regulators or the PEK (Power Enable Key) under the corresponding menus.
  CONFIG_AXP20X_POWER=y           This driver provides support for the power supply features of AXP20x PMIC.
M CONFIG_INPUT_AXP20X_PEK=y       Say Y here if you want to enable power key reporting via the AXP20X PMIC. To compile this driver as a module, choose M here. The module will be called axp20x-pek.
M CONFIG_CHARGER_AXP20X=y         Say Y here to enable support for X-Powers AXP20X and AXP22X PMICs' AC power supply. This driver can also be built as a module. If so, the module will be called axp20x_ac_power.
M CONFIG_BATTERY_AXP20X=y         Say Y here to enable support for X-Powers AXP20X PMICs' battery power supply. This driver can also be built as a module. If so, the module will be called axp20x_battery.
  CONFIG_REGULATOR_AXP20X=y       This driver provides support for the voltage regulators on the AXP20X PMIC.
M CONFIG_AXP20X_ADC=y             Say yes here to have support for X-Powers power management IC (PMIC) AXP20X and AXP22X ADC devices. To compile this driver as a module, choose M here: the module will be called axp20x_adc.
```
So I tried and turns CONFIG_SERIAL_OF_PLATFORM to n instead of y, the default sunxi kernel boots, and turns CONFIG_SERIAL_8250_DW to n instead of y, then, the boot seems to freeze at "starting kernel" (uboot). I tried also setting it to m to be integrated as a module, but same bad result.

Is it possible to integrate CONFIG_SERIAL_8250_DW into Mageia's arm kernel ?
And, in general, I thing it could be a good point if integrate also into the kernel CONFIG_SERIAL_OF_PLATFORM .

Jybz
Comment 1 Lewis Smith 2019-10-27 21:53:39 CET
https://linux-sunxi.org/LeMaker_Banana_Pro
http://www.banana-pi.org/

Assigning to kernel team.

Assignee: bugsquad => kernel
CC: (none) => lewyssmith
Summary: Enabling serial option => Mageia kernel does not boot on a Banan Pro ARM; enable serial option?

Comment 2 Jybz 2019-11-09 08:31:54 CET
Well, I think I have a workaround, instead of integrate it into the kernel, I will load it the initrd.
But it has to be at least compiled as a module, at least.

Is it possible to build only one driver without recompiling all the modules ?
Comment 3 Thomas Backlund 2019-11-09 12:22:14 CET
Sorry, I missed this report.
I will update the configs for next build

CC: (none) => tmb

Comment 4 Jybz 2019-11-09 12:36:38 CET
Oh ! Thank you !

I set initrd to embedded this driver (that I'm currently trying to build automatically in the iso creation).
And I met that CONFIG_MMC_SUNXI is built as a module and need also to be either built in the kernel, or in the initrd.

TMB, do you have any suggestion ?
Built in or as a module and embedded in initrd ?
Comment 5 Thomas Backlund 2019-11-09 12:47:22 CET
having it builtin makes it possible to boot from mmc without initrd
Comment 6 Jybz 2019-11-09 13:09:41 CET
Ok good, so please:
can you add:
CONFIG_SERIAL_8250_DW=y
and change from module to kernel:
CONFIG_MMC_SUNXI=y

There are other drivers that the default configuration for banana Pro have and isn't even as module for Mageia :
CONFIG_ROOT_NFS=y
CONFIG_CPU_FREQ=y
CONFIG_CPUFREQ_DT=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_CAN=y
CONFIG_CAN_SUN4I=y
CONFIG_STMMAC_ETH=y
CONFIG_INPUT_AXP20X_PEK=y
CONFIG_SERIAL_8250_DW=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_I2C_MV64XXX=y
CONFIG_CHARGER_AXP20X=y
CONFIG_BATTERY_AXP20X=y
CONFIG_AXP20X_POWER=y
CONFIG_CPU_THERMAL=y
CONFIG_SUNXI_WATCHDOG=y
CONFIG_MFD_AC100=y
CONFIG_MFD_AXP20X_I2C=y
CONFIG_MFD_AXP20X_RSB=y
CONFIG_REGULATOR_AXP20X=y
CONFIG_REGULATOR_GPIO=y
CONFIG_RC_CORE=y
CONFIG_RC_DEVICES=y
CONFIG_DRM_DUMB_VGA_DAC=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
CONFIG_USB_GADGET=y
CONFIG_LEDS_GPIO=y
CONFIG_RTC_DRV_AC100=y
CONFIG_AXP20X_ADC=y

It boots without, but I don't know if they are important.
Does it worth to build them as module ?
Comment 7 Thomas Backlund 2019-11-09 13:15:00 CET
I will review them
Comment 8 Jybz 2019-11-09 23:06:19 CET
Will it only be on mga8/cauldron or also on mga7 ?
I see, you already did the modification on cauldron.
Comment 9 Thomas Backlund 2019-11-09 23:09:36 CET
It will come to mga7 too, but I make all changes Cauldron first...

The new thing for Mga7 is that kernels stays in sync with Cauldron
Comment 10 Thomas Backlund 2019-11-10 13:02:00 CET
 kernel-5.3.10-1 is now building for both Cauldron and Mga7
Comment 11 Lewis Smith 2019-11-11 14:10:23 CET
(In reply to Thomas Backlund from comment #3)
> Sorry, I missed this report.
Glad to see you on this one! Thanks.

CC: lewyssmith => (none)

Comment 12 Jybz 2019-11-11 22:02:42 CET
Created attachment 11352 [details]
Log uboot, boot, root login, rpm -qa --last, poweroff

Hello!
Find in attachment the last log.
I build the image using the kernel in update_testing,
it boots correctly (I guess), I could log and shutdown.
Before closing that bug report, is there something I have to check ?
Should I write to the QA list and ask if there is any process to check if it works well (or not) ?

Thank you all for everything!

What should I do with this Mageia image? Is someone willing to write a blog article?

Jybz
Comment 13 Jybz 2019-11-11 22:09:30 CET
First bad point, no ethernet connection.

Prio this specification :
http://www.lemaker.org/product-bananapro-specification.html
Ethernet Port : 10/100/1000Mbps ethernet (Realtek RTL8211E/D)

I didn't find any Realtek RTL8211E/D driver in Mageia repo yet.
Comment 14 Thomas Backlund 2019-11-11 22:13:42 CET
(In reply to Jybz from comment #13)
> First bad point, no ethernet connection.
> 
> Prio this specification :
> http://www.lemaker.org/product-bananapro-specification.html
> Ethernet Port : 10/100/1000Mbps ethernet (Realtek RTL8211E/D)
> 
> I didn't find any Realtek RTL8211E/D driver in Mageia repo yet.

Can you provide output of lspcidrake -v and lsusb
Comment 15 Thomas Backlund 2019-11-11 22:27:14 CET
Actually, that is a RGMII PHY that should be supported  by current kernels, I will look if we still miss something
Comment 16 Jybz 2019-11-11 22:32:44 CET
[root@bananaPro ~]# lsusb
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@bananaPro ~]# lspcidrake -v
hub             : Linux 5.3.10-desktop-1.mga7 ehci_hcd|EHCI Host Controller [Hub|Unused|Full speed (or root) hub] (vendor:1d6b device:0002)
hub             : Linux 5.3.10-desktop-1.mga7 ohci_hcd|Generic Platform OHCI controller [Hub|Unused|Full speed (or root) hub] (vendor:1d6b device:0001)
hub             : Linux 5.3.10-desktop-1.mga7 ehci_hcd|EHCI Host Controller [Hub|Unused|Full speed (or root) hub] (vendor:1d6b device:0002)
hub             : Linux 5.3.10-desktop-1.mga7 ohci_hcd|Generic Platform OHCI controller [Hub|Unused|Full speed (or root) hub] (vendor:1d6b device:0001)
[root@bananaPro ~]#
Comment 17 Thomas Backlund 2019-11-11 22:50:16 CET
ok, we are missing vendor_stmicro and the stmmac driver to link up the phy
Comment 18 Jybz 2019-11-11 23:07:56 CET
Oh do you mean :
CONFIG_NET_VENDOR_STMICRO
CONFIG_STMMAC_ETH
CONFIG_STMMAC_PLATFORM
CONFIG_DWMAC_GENERIC
CONFIG_DWMAC_SUNXI <- this one ?

(By the way, I saw few user trying usb-wifi dongles, with rtl, does this option be interresting ? CONFIG_RTL8XXXU_UNTESTED )
Comment 19 Thomas Backlund 2019-11-11 23:24:59 CET
A kernel-5.3.10-2.mga7 is now building that should fix the missing network
Comment 20 Jybz 2019-11-12 21:20:02 CET
Created attachment 11354 [details]
log : boot, root, ifconfig -a, poweroff

Hi tmb !

I boot and could see that the ethernet interface was there. Unfortunately, I can not check if it correctly works (with a plugged cable) for few day, hopefully this weekend.

I saw your log message ( 1459324 - ARM: sunxi: Fix CPU powerdown on A83T )
is it related to the "bad message" at the end after power down ?
If yes, it didn't affect the behaviour (also in attachment).

cheers
Comment 21 Jybz 2019-11-15 23:36:54 CET
Confirmation !

The ethernet connexion works well.

Status: NEW => RESOLVED
Resolution: (none) => FIXED


Note You need to log in before you can comment on or make changes to this bug.