mbox series

[v2,0/2] Add SmartFusion2 EMAC block

Message ID 1586063624-13375-1-git-send-email-sundeep.lkml@gmail.com (mailing list archive)
Headers show
Series Add SmartFusion2 EMAC block | expand

Message

sundeep subbaraya April 5, 2020, 5:13 a.m. UTC
From: Subbaraya Sundeep <sundeep.lkml@gmail.com>

This patch set emulates Ethernet MAC block
present in Microsemi SmartFusion2 SoC.

v2:
  No changes. Fixed Signed-off mail id in patch 2/2


Testing:

1. Download u-boot.bin, uImage and msf2-devkit.dtb from
   https://github.com/Subbaraya-Sundeep/qemu-test-binaries.git
2. Copy uImage and msf2-devkit.dtb to suitable Qemu tftp directory
3. Launch Qemu by
   ./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel \
   u-boot.bin -display none -nic user,tftp=<qemu tftp directory>

Example:
./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel u-boot -display none -nic user,tftp=/home/hyd1358/qemu_tftp

U-Boot 2010.03-00000-ga7695d6 (Apr 04 2020 - 15:07:27)

CPU  : SmartFusion2 SoC (Cortex-M3 Hard IP)
Freqs: CORTEX-M3=142MHz,PCLK0=71MHz,PCLK1=71MHz
Board: M2S-FG484-SOM Rev 1A, www.emcraft.com
DRAM:  64 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   M2S_MAC

Hit any key to stop autoboot:  3  0 

M2S-FG484-SOM> run netboot
Using M2S_MAC device
TFTP from server 10.0.2.2; our IP address is 10.0.2.15
Filename 'uImage'.
Load address: 0xa0007fc0
Loading: *#################################################################
 #################################################################
 #################################################################
 ###############################################################
done
Bytes transferred = 3681568 (382d20 hex)
Using M2S_MAC device
TFTP from server 10.0.2.2; our IP address is 10.0.2.15
Filename 'msf2-devkit.dtb'.
Load address: 0xa0000200
Loading: *#
done
Bytes transferred = 1712 (6b0 hex)
## Booting kernel from Legacy Image at a0007fc0 ...
   Image Name:   
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3681504 Bytes =  3.5 MB
   Load Address: a0008000
   Entry Point:  a0008001
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.5.0-gb0e5502-dirty (hyd1358@hyd1358) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #85 PREEMPT Sat Apr 4 23:26:40 IST 2020
[    0.000000] CPU: ARMv7-M [410fc231] revision 1 (ARMv7M), cr=00000000
[    0.000000] CPU: unknown data cache, unknown instruction cache
[    0.000000] Machine model: Microsemi SmartFusion 2 development board
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
[    0.000000] Kernel command line: console=ttyS0,115200n8 panic=10 mem=64M@0xa0000000 earlyprintk
[    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Memory: 61212K/65536K available (1612K kernel code, 75K rwdata, 680K rodata, 1224K init, 120K bss, 4324K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0x00000000 - 0x00001000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0x00000000 - 0xffffffff   (4095 MB)
[    0.000000]     lowmem  : 0xa0000000 - 0xa4000000   (  64 MB)
[    0.000000]     modules : 0xa0000000 - 0xa0800000   (   8 MB)
[    0.000000]       .text : 0xa0008000 - 0xa02453e8   (2293 kB)
[    0.000000]       .init : 0xa0246000 - 0xa0378000   (1224 kB)
[    0.000000]       .data : 0xa0378000 - 0xa038ace0   (  76 kB)
[    0.000000]        .bss : 0xa038ace0 - 0xa03a8ea0   ( 121 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
.
.
.
[    0.445184] Found M2S MAC at 0x40041000, irq 18
[    0.448810] libphy: msf2 MII bus: probed
[    0.527047] ipip: IPv4 over IPv4 tunneling driver
[    0.532367] NET: Registered protocol family 10
[    0.542307] sit: IPv6 over IPv4 tunneling driver
[    0.544655] NET: Registered protocol family 17
[    0.565395] Freeing unused kernel memory: 1224K (a0246000 - a0378000)
init started: BusyBox v1.31.1 (2020-01-25 20:01:06 IST)
starting pid 26, tty '': '/etc/rc'
starting pid 31, tty '/dev/ttyS0': '/bin/hush -i'


BusyBox v1.31.1 (2020-01-25 20:01:06 IST) hush - the humble shell
Enter 'help' for a list of built-in commands.

/ # ifconfig eth0 10.0.2.15
[   11.116091] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
/ # [   11.653634] eth0: link up (100/full)
[   11.655246] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

/ # ls
dev   proc  sys   etc   usr   bin   tmp   sbin  mnt   init
/ # tftp -gr uImage 10.0.2.2
[   40.780983] random: nonblocking pool is initialized
/ # ls
dev     sys     usr     tmp     mnt     uImage
proc    etc     bin     sbin    init
/ #    


Subbaraya Sundeep (2):
  hw/net: Add Smartfusion2 emac block
  msf2: Add EMAC block to SmartFusion2 SoC

 MAINTAINERS                |   2 +
 hw/arm/msf2-soc.c          |  21 +-
 hw/net/Makefile.objs       |   1 +
 hw/net/msf2-emac.c         | 556 +++++++++++++++++++++++++++++++++++++++++++++
 include/hw/arm/msf2-soc.h  |   3 +
 include/hw/net/msf2-emac.h |  50 ++++
 6 files changed, 632 insertions(+), 1 deletion(-)
 create mode 100644 hw/net/msf2-emac.c
 create mode 100644 include/hw/net/msf2-emac.h

Comments

Philippe Mathieu-Daudé April 6, 2020, 10:24 a.m. UTC | #1
Hi Sundeep,

On 4/5/20 7:13 AM, sundeep.lkml@gmail.com wrote:
> From: Subbaraya Sundeep <sundeep.lkml@gmail.com>
> 
> This patch set emulates Ethernet MAC block
> present in Microsemi SmartFusion2 SoC.
> 
> v2:
>    No changes. Fixed Signed-off mail id in patch 2/2
> 
> 
> Testing:
> 
> 1. Download u-boot.bin, uImage and msf2-devkit.dtb from
>     https://github.com/Subbaraya-Sundeep/qemu-test-binaries.git
> 2. Copy uImage and msf2-devkit.dtb to suitable Qemu tftp directory
> 3. Launch Qemu by
>     ./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel \
>     u-boot.bin -display none -nic user,tftp=<qemu tftp directory>
> 
> Example:
> ./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel u-boot -display none -nic user,tftp=/home/hyd1358/qemu_tftp
> 
> U-Boot 2010.03-00000-ga7695d6 (Apr 04 2020 - 15:07:27)
> 
> CPU  : SmartFusion2 SoC (Cortex-M3 Hard IP)
> Freqs: CORTEX-M3=142MHz,PCLK0=71MHz,PCLK1=71MHz
> Board: M2S-FG484-SOM Rev 1A, www.emcraft.com
> DRAM:  64 MB
> *** Warning - bad CRC, using default environment
> 
> In:    serial
> Out:   serial
> Err:   serial
> Net:   M2S_MAC
> 
> Hit any key to stop autoboot:  3  0
> 
> M2S-FG484-SOM> run netboot
> Using M2S_MAC device
> TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> Filename 'uImage'.
> Load address: 0xa0007fc0
> Loading: *#################################################################
>   #################################################################
>   #################################################################
>   ###############################################################
> done
> Bytes transferred = 3681568 (382d20 hex)
> Using M2S_MAC device
> TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> Filename 'msf2-devkit.dtb'.
> Load address: 0xa0000200
> Loading: *#
> done
> Bytes transferred = 1712 (6b0 hex)
> ## Booting kernel from Legacy Image at a0007fc0 ...
>     Image Name:
>     Image Type:   ARM Linux Kernel Image (uncompressed)
>     Data Size:    3681504 Bytes =  3.5 MB
>     Load Address: a0008000
>     Entry Point:  a0008001
>     Verifying Checksum ... OK
>     Loading Kernel Image ... OK
> OK
> 
> Starting kernel ...
> 
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 4.5.0-gb0e5502-dirty (hyd1358@hyd1358) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #85 PREEMPT Sat Apr 4 23:26:40 IST 2020
> [    0.000000] CPU: ARMv7-M [410fc231] revision 1 (ARMv7M), cr=00000000
> [    0.000000] CPU: unknown data cache, unknown instruction cache
> [    0.000000] Machine model: Microsemi SmartFusion 2 development board
> [    0.000000] bootconsole [earlycon0] enabled
> [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
> [    0.000000] Kernel command line: console=ttyS0,115200n8 panic=10 mem=64M@0xa0000000 earlyprintk
> [    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
> [    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
> [    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
> [    0.000000] Memory: 61212K/65536K available (1612K kernel code, 75K rwdata, 680K rodata, 1224K init, 120K bss, 4324K reserved, 0K cma-reserved)
> [    0.000000] Virtual kernel memory layout:
> [    0.000000]     vector  : 0x00000000 - 0x00001000   (   4 kB)
> [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
> [    0.000000]     vmalloc : 0x00000000 - 0xffffffff   (4095 MB)
> [    0.000000]     lowmem  : 0xa0000000 - 0xa4000000   (  64 MB)
> [    0.000000]     modules : 0xa0000000 - 0xa0800000   (   8 MB)
> [    0.000000]       .text : 0xa0008000 - 0xa02453e8   (2293 kB)
> [    0.000000]       .init : 0xa0246000 - 0xa0378000   (1224 kB)
> [    0.000000]       .data : 0xa0378000 - 0xa038ace0   (  76 kB)
> [    0.000000]        .bss : 0xa038ace0 - 0xa03a8ea0   ( 121 kB)
> [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] Preemptible hierarchical RCU implementation.
> .
> .
> .
> [    0.445184] Found M2S MAC at 0x40041000, irq 18
> [    0.448810] libphy: msf2 MII bus: probed
> [    0.527047] ipip: IPv4 over IPv4 tunneling driver
> [    0.532367] NET: Registered protocol family 10
> [    0.542307] sit: IPv6 over IPv4 tunneling driver
> [    0.544655] NET: Registered protocol family 17
> [    0.565395] Freeing unused kernel memory: 1224K (a0246000 - a0378000)
> init started: BusyBox v1.31.1 (2020-01-25 20:01:06 IST)
> starting pid 26, tty '': '/etc/rc'
> starting pid 31, tty '/dev/ttyS0': '/bin/hush -i'
> 
> 
> BusyBox v1.31.1 (2020-01-25 20:01:06 IST) hush - the humble shell
> Enter 'help' for a list of built-in commands.
> 
> / # ifconfig eth0 10.0.2.15
> [   11.116091] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
> / # [   11.653634] eth0: link up (100/full)
> [   11.655246] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
> 
> / # ls
> dev   proc  sys   etc   usr   bin   tmp   sbin  mnt   init
> / # tftp -gr uImage 10.0.2.2
> [   40.780983] random: nonblocking pool is initialized
> / # ls
> dev     sys     usr     tmp     mnt     uImage
> proc    etc     bin     sbin    init
> / #

Thanks for the use case example!

Do you mind adding it to our test suite? There are various examples in 
tests/acceptance/boot_linux_console.py.

Thanks!

Phil.
> 
> Subbaraya Sundeep (2):
>    hw/net: Add Smartfusion2 emac block
>    msf2: Add EMAC block to SmartFusion2 SoC
> 
>   MAINTAINERS                |   2 +
>   hw/arm/msf2-soc.c          |  21 +-
>   hw/net/Makefile.objs       |   1 +
>   hw/net/msf2-emac.c         | 556 +++++++++++++++++++++++++++++++++++++++++++++
>   include/hw/arm/msf2-soc.h  |   3 +
>   include/hw/net/msf2-emac.h |  50 ++++
>   6 files changed, 632 insertions(+), 1 deletion(-)
>   create mode 100644 hw/net/msf2-emac.c
>   create mode 100644 include/hw/net/msf2-emac.h
>
sundeep subbaraya April 7, 2020, 11:16 a.m. UTC | #2
Hi Philippe,

On Mon, Apr 6, 2020 at 3:54 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> Hi Sundeep,
>
> On 4/5/20 7:13 AM, sundeep.lkml@gmail.com wrote:
> > From: Subbaraya Sundeep <sundeep.lkml@gmail.com>
> >
> > This patch set emulates Ethernet MAC block
> > present in Microsemi SmartFusion2 SoC.
> >
> > v2:
> >    No changes. Fixed Signed-off mail id in patch 2/2
> >
> >
> > Testing:
> >
> > 1. Download u-boot.bin, uImage and msf2-devkit.dtb from
> >     https://github.com/Subbaraya-Sundeep/qemu-test-binaries.git
> > 2. Copy uImage and msf2-devkit.dtb to suitable Qemu tftp directory
> > 3. Launch Qemu by
> >     ./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel \
> >     u-boot.bin -display none -nic user,tftp=<qemu tftp directory>
> >
> > Example:
> > ./arm-softmmu/qemu-system-arm -M emcraft-sf2 -serial mon:stdio -kernel u-boot -display none -nic user,tftp=/home/hyd1358/qemu_tftp
> >
> > U-Boot 2010.03-00000-ga7695d6 (Apr 04 2020 - 15:07:27)
> >
> > CPU  : SmartFusion2 SoC (Cortex-M3 Hard IP)
> > Freqs: CORTEX-M3=142MHz,PCLK0=71MHz,PCLK1=71MHz
> > Board: M2S-FG484-SOM Rev 1A, www.emcraft.com
> > DRAM:  64 MB
> > *** Warning - bad CRC, using default environment
> >
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Net:   M2S_MAC
> >
> > Hit any key to stop autoboot:  3  0
> >
> > M2S-FG484-SOM> run netboot
> > Using M2S_MAC device
> > TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> > Filename 'uImage'.
> > Load address: 0xa0007fc0
> > Loading: *#################################################################
> >   #################################################################
> >   #################################################################
> >   ###############################################################
> > done
> > Bytes transferred = 3681568 (382d20 hex)
> > Using M2S_MAC device
> > TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> > Filename 'msf2-devkit.dtb'.
> > Load address: 0xa0000200
> > Loading: *#
> > done
> > Bytes transferred = 1712 (6b0 hex)
> > ## Booting kernel from Legacy Image at a0007fc0 ...
> >     Image Name:
> >     Image Type:   ARM Linux Kernel Image (uncompressed)
> >     Data Size:    3681504 Bytes =  3.5 MB
> >     Load Address: a0008000
> >     Entry Point:  a0008001
> >     Verifying Checksum ... OK
> >     Loading Kernel Image ... OK
> > OK
> >
> > Starting kernel ...
> >
> > [    0.000000] Booting Linux on physical CPU 0x0
> > [    0.000000] Linux version 4.5.0-gb0e5502-dirty (hyd1358@hyd1358) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #85 PREEMPT Sat Apr 4 23:26:40 IST 2020
> > [    0.000000] CPU: ARMv7-M [410fc231] revision 1 (ARMv7M), cr=00000000
> > [    0.000000] CPU: unknown data cache, unknown instruction cache
> > [    0.000000] Machine model: Microsemi SmartFusion 2 development board
> > [    0.000000] bootconsole [earlycon0] enabled
> > [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256
> > [    0.000000] Kernel command line: console=ttyS0,115200n8 panic=10 mem=64M@0xa0000000 earlyprintk
> > [    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
> > [    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
> > [    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
> > [    0.000000] Memory: 61212K/65536K available (1612K kernel code, 75K rwdata, 680K rodata, 1224K init, 120K bss, 4324K reserved, 0K cma-reserved)
> > [    0.000000] Virtual kernel memory layout:
> > [    0.000000]     vector  : 0x00000000 - 0x00001000   (   4 kB)
> > [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
> > [    0.000000]     vmalloc : 0x00000000 - 0xffffffff   (4095 MB)
> > [    0.000000]     lowmem  : 0xa0000000 - 0xa4000000   (  64 MB)
> > [    0.000000]     modules : 0xa0000000 - 0xa0800000   (   8 MB)
> > [    0.000000]       .text : 0xa0008000 - 0xa02453e8   (2293 kB)
> > [    0.000000]       .init : 0xa0246000 - 0xa0378000   (1224 kB)
> > [    0.000000]       .data : 0xa0378000 - 0xa038ace0   (  76 kB)
> > [    0.000000]        .bss : 0xa038ace0 - 0xa03a8ea0   ( 121 kB)
> > [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> > [    0.000000] Preemptible hierarchical RCU implementation.
> > .
> > .
> > .
> > [    0.445184] Found M2S MAC at 0x40041000, irq 18
> > [    0.448810] libphy: msf2 MII bus: probed
> > [    0.527047] ipip: IPv4 over IPv4 tunneling driver
> > [    0.532367] NET: Registered protocol family 10
> > [    0.542307] sit: IPv6 over IPv4 tunneling driver
> > [    0.544655] NET: Registered protocol family 17
> > [    0.565395] Freeing unused kernel memory: 1224K (a0246000 - a0378000)
> > init started: BusyBox v1.31.1 (2020-01-25 20:01:06 IST)
> > starting pid 26, tty '': '/etc/rc'
> > starting pid 31, tty '/dev/ttyS0': '/bin/hush -i'
> >
> >
> > BusyBox v1.31.1 (2020-01-25 20:01:06 IST) hush - the humble shell
> > Enter 'help' for a list of built-in commands.
> >
> > / # ifconfig eth0 10.0.2.15
> > [   11.116091] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
> > / # [   11.653634] eth0: link up (100/full)
> > [   11.655246] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
> >
> > / # ls
> > dev   proc  sys   etc   usr   bin   tmp   sbin  mnt   init
> > / # tftp -gr uImage 10.0.2.2
> > [   40.780983] random: nonblocking pool is initialized
> > / # ls
> > dev     sys     usr     tmp     mnt     uImage
> > proc    etc     bin     sbin    init
> > / #
>
> Thanks for the use case example!
>
> Do you mind adding it to our test suite? There are various examples in
> tests/acceptance/boot_linux_console.py.

Sure I will add and send next spin.

Thanks,
Sundeep
>
> Thanks!
>
> Phil.
> >
> > Subbaraya Sundeep (2):
> >    hw/net: Add Smartfusion2 emac block
> >    msf2: Add EMAC block to SmartFusion2 SoC
> >
> >   MAINTAINERS                |   2 +
> >   hw/arm/msf2-soc.c          |  21 +-
> >   hw/net/Makefile.objs       |   1 +
> >   hw/net/msf2-emac.c         | 556 +++++++++++++++++++++++++++++++++++++++++++++
> >   include/hw/arm/msf2-soc.h  |   3 +
> >   include/hw/net/msf2-emac.h |  50 ++++
> >   6 files changed, 632 insertions(+), 1 deletion(-)
> >   create mode 100644 hw/net/msf2-emac.c
> >   create mode 100644 include/hw/net/msf2-emac.h
> >
>