qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] hw/block/nand: Decommission the NAND museum


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v2] hw/block/nand: Decommission the NAND museum
Date: Mon, 14 Dec 2020 01:23:04 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0

On 12/14/20 1:11 AM, Philippe Mathieu-Daudé wrote:
> On 10/19/20 6:05 PM, Peter Maydell wrote:
>> On Tue, 15 Sep 2020 at 18:52, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>>>
>>> This is the QEMU equivalent of this Linux commit (but 7 years later):
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7025a43a9da2
>>>
>>>     The MTD subsystem has its own small museum of ancient NANDs
>>>     in a form of the CONFIG_MTD_NAND_MUSEUM_IDS configuration option.
>>>     The museum contains stone age NANDs with 256 bytes pages, as well
>>>     as iron age NANDs with 512 bytes per page and up to 8MiB page size.
>>>
>>>     It is with great sorrow that I inform you that the museum is being
>>>     decommissioned. The MTD subsystem is out of budget for Kconfig
>>>     options and already has too many of them, and there is a general
>>>     kernel trend to simplify the configuration menu.
>>>
>>>     We remove the stone age exhibits along with closing the museum,
>>>     but some of the iron age ones are transferred to the regular NAND
>>>     depot. Namely, only those which have unique device IDs are
>>>     transferred, and the ones which have conflicting device IDs are
>>>     removed.
>>>
>>> The machine using this device are:
>>> - axis-dev88
>>> - tosa (via tc6393xb_init)
>>> - spitz based (akita, borzoi, terrier)
>>>
>>> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> ---
>>> Peter, as 4 of the 5 machines are ARM-based, can this go via your tree?
>>> ---
>>>  hw/block/nand.c | 13 ++++++-------
>>>  1 file changed, 6 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/hw/block/nand.c b/hw/block/nand.c
>>> index 5c8112ed5a4..5f01ba2bc44 100644
>>> --- a/hw/block/nand.c
>>> +++ b/hw/block/nand.c
>>> @@ -138,7 +138,7 @@ static void mem_and(uint8_t *dest, const uint8_t *src, 
>>> size_t n)
>>>  # define ADDR_SHIFT            16
>>>  # include "nand.c"
>>>
>>> -/* Information based on Linux drivers/mtd/nand/nand_ids.c */
>>> +/* Information based on Linux drivers/mtd/nand/raw/nand_ids.c */
>>>  static const struct {
>>>      int size;
>>>      int width;
>>> @@ -154,15 +154,14 @@ static const struct {
>>>      [0xe8] = { 1,      8,      8, 4, 0 },
>>>      [0xec] = { 1,      8,      8, 4, 0 },
>>>      [0xea] = { 2,      8,      8, 4, 0 },
>>> -    [0xd5] = { 4,      8,      9, 4, 0 },
>>>      [0xe3] = { 4,      8,      9, 4, 0 },
>>>      [0xe5] = { 4,      8,      9, 4, 0 },
>>> -    [0xd6] = { 8,      8,      9, 4, 0 },
>>>
>>> -    [0x39] = { 8,      8,      9, 4, 0 },
>>> -    [0xe6] = { 8,      8,      9, 4, 0 },
>>> -    [0x49] = { 8,      16,     9, 4, NAND_BUSWIDTH_16 },
>>> -    [0x59] = { 8,      16,     9, 4, NAND_BUSWIDTH_16 },
>>> +    [0x6b] = { 4,        8,        9, 4, 0 },
>>> +    [0xe3] = { 4,        8,        9, 4, 0 },
>>> +    [0xe5] = { 4,        8,        9, 4, 0 },
>>
>> This line adds an entry for 0xe5, but there is already one
>> further up in the array (you can see it in this hunk).
>>
>> More generally, it doesn't seem to match the referenced
>> kernel commit, which deletes 14 lines and adds 5
>> (which are a subset of the 14 deleted, really, so
>> they probably show up for us as "9 deletions" since
>> we don't have the #ifdef...#endif the kernel does).
> 
> Well, this is what this patch intended to do...
> 14 deletions:
> 
> -    [0x6e] = { 1,      8,      8, 4, 0 },
> -    [0x64] = { 2,      8,      8, 4, 0 },
> -    [0x6b] = { 4,      8,      9, 4, 0 },
> -    [0xe8] = { 1,      8,      8, 4, 0 },
> -    [0xec] = { 1,      8,      8, 4, 0 },
> -    [0xea] = { 2,      8,      8, 4, 0 },
> -    [0xd5] = { 4,      8,      9, 4, 0 },
> -    [0xe3] = { 4,      8,      9, 4, 0 },
> -    [0xe5] = { 4,      8,      9, 4, 0 },
> -    [0xd6] = { 8,      8,      9, 4, 0 },
> -
> -    [0x39] = { 8,      8,      9, 4, 0 },
> -    [0xe6] = { 8,      8,      9, 4, 0 },
> -    [0x49] = { 8,      16,     9, 4, NAND_BUSWIDTH_16 },
> -    [0x59] = { 8,      16,     9, 4, NAND_BUSWIDTH_16 },
> 
> and 5 additions:
> 
> +    [0x6b] = { 4,      8,      9, 4, 0 },
> +    [0xe3] = { 4,      8,      9, 4, 0 },
> +    [0xe5] = { 4,      8,      9, 4, 0 },
> +    [0xd6] = { 8,      8,      9, 4, 0 },
> +    [0xe6] = { 8,      8,      9, 4, 0 },

OK, the kernel commit has 9+5=14 removals and 5 "additions",
because the "additions" change the hex index from lowercase
to uppercase. I.e.:

-       {"NAND 4MiB 3,3V 8-bit",        0xe5, 512, 4, 0x2000, SP_OPTIONS},
+       {"NAND 4MiB 3,3V 8-bit",        0xE5, 512, 4, 0x2000, SP_OPTIONS},

This explain why the resulting diff is 9 removals:

> 
> When combined, the resulting diff is:
> 
> -    [0x6e] = { 1,    8,      8, 4, 0 },
> -    [0x64] = { 2,    8,      8, 4, 0 },
>      [0x6b] = { 4,    8,      9, 4, 0 },
> -    [0xe8] = { 1,    8,      8, 4, 0 },
> -    [0xec] = { 1,    8,      8, 4, 0 },
> -    [0xea] = { 2,    8,      8, 4, 0 },
> -    [0xd5] = { 4,    8,      9, 4, 0 },
>      [0xe3] = { 4,    8,      9, 4, 0 },
>      [0xe5] = { 4,    8,      9, 4, 0 },
>      [0xd6] = { 8,    8,      9, 4, 0 },
> -
> -    [0x39] = { 8,    8,      9, 4, 0 },
>      [0xe6] = { 8,    8,      9, 4, 0 },
> -    [0x49] = { 8,    16,     9, 4, NAND_BUSWIDTH_16 },
> -    [0x59] = { 8,    16,     9, 4, NAND_BUSWIDTH_16 },
> 
> But trying to commit that I get (while only removing lines!):
> 
> ERROR: code indent should never use tabs
> #14: FILE: hw/block/nand.c:150:
> +    [0x6b] = { 4,^I8,^I9, 4, 0 },$
> 
> ERROR: code indent should never use tabs
> #15: FILE: hw/block/nand.c:151:
> +    [0xe3] = { 4,^I8,^I9, 4, 0 },$
> 
> ERROR: code indent should never use tabs
> #16: FILE: hw/block/nand.c:152:
> +    [0xe5] = { 4,^I8,^I9, 4, 0 },$
> 
> ERROR: code indent should never use tabs
> #17: FILE: hw/block/nand.c:153:
> +    [0xd6] = { 8,^I8,^I9, 4, 0 },$
> 
> ERROR: code indent should never use tabs
> #18: FILE: hw/block/nand.c:154:
> +    [0xe6] = { 8,^I8,^I9, 4, 0 },$
> 
> So I changed the tabs by space and committed.
> 
> TBH I don't understand what happened. I suppose I
> messed while replacing tabs by space... I feel
> ashamed, sorry.
> 
>>
>>> +    [0xd6] = { 8,        8,        9, 4, 0 },
>>> +    [0xe6] = { 8,        8,        9, 4, 0 },
>>>
>>>      [0x33] = { 16,     8,      9, 5, 0 },
>>>      [0x73] = { 16,     8,      9, 5, 0 },
>>
>> thanks
>> -- PMM
>>
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]