[Letux-kernel] Strange problem with non-LPAE letux-4.20-rc kernels on 4GB Pyra only - PARTUUID not found
H. Nikolaus Schaller
hns at goldelico.com
Sun Dec 16 10:55:44 CET 2018
> Am 16.12.2018 um 09:08 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>
> Hi,
>
>> Am 15.12.2018 um 12:04 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>
>> Ok... well Nok...
>>
>>> Am 14.12.2018 um 21:19 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>>
>>>>
>>>> Hm. Shouldn't git bisect go down into the merge and look for the real patch there?
>>>
>>> Some idea could to try CONFIG_USB=n in letux-4.20-rc1 since we do not need it to boot
>>> from MMC. If it then works, we can prove that the USB subsystem has a side-effect.
>>
>> It seems to be a false positive by git bisect (or I have wrongly reported "good" and "bad").
>>
>> Using CONFIG_USB=n doesn't help.
>> checkout 9703fc8caf36ac65dca1538b23dd137de0b53233 && apply patches && compile && install && boot => PARTUUID not found
>> checkout 9703fc8caf36ac65dca1538b23dd137de0b53233^ && apply patches && compile && install && boot => PARTUUID not found
>>
>> So I should define 4.19.0 as good and 9703fc8caf36ac65dca1538b23dd137de0b53233^ as bad and start another round of bisect...
>
> For summary again:
>
> bad case: kernel stops with
>
> [ 3.473657] sr_init: No PMIC hook to init smartreflex
> [ 3.479880] vmmcsdio_fixed: disabling
> [ 3.484345] ldo3: disabling
> [ 3.487981] ldo8: disabling
> [ 3.498640] ALSA device list:
> [ 3.501745] No soundcards found.
> [ 3.505668] Waiting for root device PARTUUID=c8a507cd-02...
>
> although U-Boot and external SD card reader confirms that the PARTUUID is c8a507cd-02
>
> good case:
>
> [ 3.526955] sr_init: No PMIC hook to init smartreflex
> [ 3.533200] vmmcsdio_fixed: disabling
> [ 3.537948] ldo3: disabling
> [ 3.541893] ldo8: disabling
> [ 3.552425] ALSA device list:
> [ 3.555526] No soundcards found.
> [ 3.584375] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
> [ 3.593118] VFS: Mounted root (ext4 filesystem) on device 179:2.
> [ 3.609188] devtmpfs: mounted
> [ 3.612978] Freeing unused kernel memory: 1024K
> [ 3.617863] Run /sbin/init as init process
>
> Running git bisect again (I probably did mark some commit wrongly as good/bad)
> has now revealed patch:
>
> e63201f19438372fcb45977d8e14c6ab5807d55b is the first bad commit
> commit e63201f19438372fcb45977d8e14c6ab5807d55b
> Author: Linus Walleij <linus.walleij at linaro.org>
> Date: Mon Sep 24 13:30:51 2018 +0200
>
> mmc: omap_hsmmc: Delete platform data GPIO CD and WP
>
> The OMAP HSMMC driver has some elaborate and hairy handling for
> passing GPIO card detect and write protect lines from a boardfile
> into the driver: the machine defines a struct omap2_hsmmc_info
> that is copied into struct omap_hsmmc_platform_data by
> omap_hsmmc_pdata_init() in arch/arm/mach-omap2/hsmmc.c.
>
> However the .gpio_cd and .gpio_wp fields are not copied from
> omap2_hsmmc_info to omap_hsmmc_platform_data by
> omap_hsmmc_pdata_init() so they remain unused. The only platform
> defining omap2_hsmmc_info also define both to -1, unused.
>
> It turn out there are no boardfiles passing any valid GPIO
> lines into the OMAP HSMMC driver at all. And since we are not
> going to add any more OMAP2 boardfiles, we can delete this
> card detect and write protect handling altogether.
>
> This seems to also fix a bug: the card detect callback
> mmc_gpio_get_cd() in the slot GPIO core needs to be called
> by drivers utilizing slot GPIO. It appears the the boardfile
> quirks were not doing this right, so this would only get
> called for boardfiles, i.e. since no boardfile was using it,
> never.
>
> Just assign mmc_gpio_get_cd() unconditionally to omap_hsmmc_ops
> .get_cd() so card detects from the device tree works.
> AFAICT card detect with GPIO lines assigned from
> mmc_of_parse() are not working at the moment, but that is
> no regression since it probably never worked.
>
> Yes, that is very reasonable to be the offending patch.
>
> And the last sentence is probably the problem!!!
> It contains a lot of speculation and assumption that it does
> not break anything... I am quite sure that a patch submitted by me
> with this description would have been rejected...
>
> I am tempted to propose a simple revert just because it *is* a
> regression for us using a proper (at least I think so) DTS...
>
> But it is still not clear why it works on GTA04 and the older
> Pyra prototype. And why it works with the other SD slot.
>
> Maybe they have removed some special side-effect of omap_hsmmc_gpio_init()?
> Or this board has a broken gpio (returning always "1") which was ignored
> before this patch because we have no board file?
Ok, the gpio seems to work - at least mostly (there is a proper pull-up missing).
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6fcf000.
Value at address 0x48053138 (0xb6fcf138): 0x30
^^^ these are gpio8_228 (CD) and gpio_229 (WP)
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f7d000.
Value at address 0x48053138 (0xb6f7d138): 0x30
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f1e000.
Value at address 0x48053138 (0xb6f1e138): 0x30
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f42000.
Value at address 0x48053138 (0xb6f42138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f02000.
Value at address 0x48053138 (0xb6f02138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6fd0000.
Value at address 0x48053138 (0xb6fd0138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6fc1000.
Value at address 0x48053138 (0xb6fc1138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6fab000.
Value at address 0x48053138 (0xb6fab138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f71000.
Value at address 0x48053138 (0xb6f71138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f88000.
Value at address 0x48053138 (0xb6f88138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f41000.
Value at address 0x48053138 (0xb6f41138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f79000.
Value at address 0x48053138 (0xb6f79138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f62000.
Value at address 0x48053138 (0xb6f62138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f0a000.
Value at address 0x48053138 (0xb6f0a138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6fcf000.
Value at address 0x48053138 (0xb6fcf138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f5e000.
Value at address 0x48053138 (0xb6f5e138): 0x20
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f59000.
Value at address 0x48053138 (0xb6f59138): 0x10
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138[ 779.557025] mmc3: card never left busy state
[ 779.561728] mmc3: error -110 whilst initialising SD card
^^^ strange error when taking out the SD card.
vvv then I activated the lock switch (WP):
/dev/mem opened.
Memory mapped at address 0xb6f2d000.
Value at address 0x48053138 (0xb6f2d138): 0x0
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6ffa000.
Value at address 0x48053138 (0xb6ffa138): 0x0
root at letux:~# /usr/bin/arm-linux-gnueabihf/devmem2 0x48053138
/dev/mem opened.
Memory mapped at address 0xb6f3b000.
Value at address 0x48053138 (0xb6f3b138): 0x10
root at letux:~#
So this means WP and CD are (basically) working (besides the
known problem of missing pull-up which should be almost harmless
if the card is inserted - it may only write-protect the card
unexpectedly).
BR,
Nikolaus
More information about the Letux-kernel
mailing list