From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM,HTML_MESSAGE,LOTS_OF_MONEY, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 14077 invoked from network); 1 Sep 2023 02:12:24 -0000 Received: from tb-ob1.topicbox.com (64.147.108.173) by inbox.vuxu.org with ESMTPUTF8; 1 Sep 2023 02:12:24 -0000 Received: from tb-mx1.topicbox.com (tb-mx1.nyi.icgroup.com [10.90.30.61]) by tb-ob1.topicbox.com (Postfix) with ESMTP id EB50A3209F for ; Thu, 31 Aug 2023 22:12:22 -0400 (EDT) (envelope-from bounce.mMeca1d0c552a069be2e26805e.r522be890-2105-11eb-b15e-8d699134e1fa@9fans.bounce.topicbox.com) Received: by tb-mx1.topicbox.com (Postfix, from userid 1132) id E833323C031F; Thu, 31 Aug 2023 22:12:22 -0400 (EDT) ARC-Authentication-Results: i=2; topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=WBivNzsY header.a=rsa-sha256 header.s=20221208 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=don.bailey@gmail.com smtp.helo=mail-qt1-f180.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type:list-help:list-id:list-post :list-subscribe:reply-to:content-transfer-encoding :list-unsubscribe; s=sysmsg-1; t=1693534342; bh=sCKnTVGODB5TUOn2 MB27TllvDjRkRu5mPXgXk+1L5cE=; b=iW81Rmx4uygW9yXvU49WmVToEB1f7c5+ kAwlLBznkZ7D3mn3VxNvUtG3D0aRyhOpDRO0MRdQtbYMQoErWXPXOIN/quuEi6yE q3Iyd3c5Yhz0usGTd9ts1RJyZx4xmnJXIZt8hPXs1UfOarSYo4NB1NScI+vUZBh3 TJbuZe5Pxq4= ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=topicbox.com; s=sysmsg-1; t= 1693534342; b=Z69GU75eaMyqey7T2Klgy2+l4x5a9SrIFRIMxbmVcUMEnzLDCn OWtPi1x+nIl+dSQ3V4UeJ86O4h2IrUx94tFbD4ShQQGAmmSkQgQQBB7qDHVwnd+K HxlxKyqkgOIrbqiQQZ0XwZaostaf0RiKu6AOVqlhX97j5Po/+3J27paWg= Authentication-Results: topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=WBivNzsY header.a=rsa-sha256 header.s=20221208 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; spf=pass smtp.mailfrom=don.bailey@gmail.com smtp.helo=mail-qt1-f180.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (message has been altered)) (Message modified while forwarding at Topicbox) X-Received-Authentication-Results: tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=WBivNzsY header.a=rsa-sha256 header.s=20221208 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.160.180 (mail-qt1-f180.google.com); spf=pass smtp.mailfrom=don.bailey@gmail.com smtp.helo=mail-qt1-f180.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=eiHtE65i; x-me-sender=none; x-ptr=pass smtp.helo=mail-qt1-f180.google.com policy.ptr=mail-qt1-f180.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=0 state=0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=9fans.net; h= mime-version:references:in-reply-to:from:date:message-id:subject :to:content-type:list-help:list-id:list-post:list-subscribe :reply-to:content-transfer-encoding:list-unsubscribe; s=dkim-1; t=1693534342; x=1693620742; bh=mZwWG8OlAEYJEGoARciH4W7/9kX+hf2w SeBaGq+PbTw=; b=avISvwiKo8h6/OlPxTZrbulZay4xOD6ekUhgKSlC+oWmm+th 4v28bq4b/FRkGLGRF6q+/Z0+yw4IkMIAov+LmLidh2EeJPjLSSzXOz9rOlJiNXwA e4EKvE5Vhf4cB88cbIot6QoZe9stLx+VOBEP7nfK+9D27AJPOI6z13pxmUg= Received: from tb-mx1.topicbox.com (localhost.local [127.0.0.1]) by tb-mx1.topicbox.com (Postfix) with ESMTP id CFE4A23BFEFE for <9fans@9fans.net>; Thu, 31 Aug 2023 22:12:05 -0400 (EDT) (envelope-from don.bailey@gmail.com) Received: from tb-mx1.topicbox.com (localhost [127.0.0.1]) by tb-mx1.topicbox.com (Authentication Milter) with ESMTP id BD2C68DFC86; Thu, 31 Aug 2023 22:12:05 -0400 ARC-Seal: i=1; a=rsa-sha256; cv=none; d=topicbox.com; s=arcseal; t= 1693534325; b=bjfTFXrqaaMoyCMHHqFvqCb2aSdcp56WiSxRSTqH+74i0NWdaB tbMwlWt+pJgzvkLQfEY9hsZ/3bHRpCRaFOhubOPkkIGEP+tBwA8ZrcQ3T+jbU9u4 saOXvwWcBYxjlnU1kWYTwCBssI1Hrzo/xZzvwcXVqAYM29Mgj9keBkufj0rh5AOo UazsBmuRxC3nX+f2U8irXtyC/SCqCYS0Zdjau+P/bOYkuUiCy88CKRq2w3j4yZs/ csPdpF3I6j8BJRwDlce+jz8EIf2P6MOeieIfVih54mXb7OXGVNSbSbX9H/73CaJa iIh3AE2umI1Zy1DTD5e8XZlYnDePhvLI/SaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= topicbox.com; h=mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; s=arcseal; t=1693534325; bh=YsGnC2ot1CcXc7/q4Z3EkX7YjglzfzvKr825GaPg/e8=; b=J2A3t91c/LOn zlH3CY0yaeg1i5HcBilMNqbj2KXCQJKSl3JBUOWGKejGRw5JCR66Qxm9D2HoDase YdATCf5so4ZmcGK3hIXgK84yR8wT7JSJUfgXS/mnT6skQ5LjtzfFuGS9tuzQSN4m 5fqQXgA1jfMmWSHFJG2AT/uJxasz2eF6Xl/Nr5bBSDMTpnADsdQ0SYka/3hdNs1W cSp6z+zgeHizgYgCNtvM8FFsaaYjoduLHBXELXPaWrfuhi0O2Zl4F9SqDGUYcBKh 0Is9H+ijME3qEvSUyDJ4264ckzDYsLEeRS3jnbrSh63vSbvF9JZePhWl392vSKRC S8qwO9Cz/A== ARC-Authentication-Results: i=1; tb-mx1.topicbox.com; arc=none (no signatures found); bimi=skipped (DMARC Policy is not at enforcement); dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=WBivNzsY header.a=rsa-sha256 header.s=20221208 x-bits=2048; dmarc=pass policy.published-domain-policy=none policy.published-subdomain-policy=quarantine policy.applied-disposition=none policy.evaluated-disposition=none (p=none,sp=quarantine,d=none,d.eval=none) policy.policy-from=p header.from=gmail.com; iprev=pass smtp.remote-ip=209.85.160.180 (mail-qt1-f180.google.com); spf=pass smtp.mailfrom=don.bailey@gmail.com smtp.helo=mail-qt1-f180.google.com; x-aligned-from=pass (Address match); x-google-dkim=pass (2048-bit rsa key) header.d=1e100.net header.i=@1e100.net header.b=eiHtE65i; x-me-sender=none; x-ptr=pass smtp.helo=mail-qt1-f180.google.com policy.ptr=mail-qt1-f180.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt2.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt3.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com); x-tls=pass smtp.version=TLSv1.2 smtp.cipher=ECDHE-RSA-AES256-GCM-SHA384 smtp.bits=256/256; x-vs=clean score=0 state=0 X-ME-VSCause: gggruggvucftvghtrhhoucdtuddrgedviedrudeguddgheehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpeggfhgjhf ffkffuvfgtsegrtderredttdejnecuhfhrohhmpeffohhnuceurghilhgvhicuoeguohhn rdgsrghilhgvhiesghhmrghilhdrtghomheqnecuggftrfgrthhtvghrnhepgfejffefge fggfeliefgjeekgefftdejgfeludetuddulefguefgueeuvdfhueetnecuffhomhgrihhn pehtohhpihgtsghogidrtghomhenucfkphepvddtledrkeehrdduiedtrddukedtnecuve hluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepvddtledrkeehrdduiedt rddukedtpdhhvghlohepmhgrihhlqdhqthduqdhfudektddrghhoohhglhgvrdgtohhmpd hmrghilhhfrhhomhepoeguohhnrdgsrghilhgvhiesghhmrghilhdrtghomheq X-ME-VSScore: 0 X-ME-VSCategory: clean Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use 'don.bailey@gmail.com' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=tb-mx1.topicbox.com; identity=mailfrom; envelope-from="don.bailey@gmail.com"; helo=mail-qt1-f180.google.com; client-ip=209.85.160.180 Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tb-mx1.topicbox.com (Postfix) with ESMTPS for <9fans@9fans.net>; Thu, 31 Aug 2023 22:12:05 -0400 (EDT) (envelope-from don.bailey@gmail.com) Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-41368601e92so8281491cf.3 for <9fans@9fans.net>; Thu, 31 Aug 2023 19:12:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693534324; x=1694139124; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YsGnC2ot1CcXc7/q4Z3EkX7YjglzfzvKr825GaPg/e8=; b=eiHtE65i2y1tS5d1T2QFbe7vKVfGf/sQmJXasF4Izi4UWq8RxfhUNa/UkYpmHWBaDc IKZ90iipDPNfgx2AnfVrLBTceDxdYHbXarg6jwqKzqBclwgLMWw4N6ZVMAUr42weU8hM s49knhmnZRb/LVAcCEtcgLo6pr9ObldgKaXTBliDbSTtCZj9XA8xqjq3tjm9BFcQ19HS /MDDYkuVhrffj7ZInj5BzF5PSLiGGEtPB3cXjCsFwzBrv1I1PDKzcwGu8aFyEJDmpnWS ZLM17L0kRLtaJTOBeH8RziJ5dKUuTxkshYkOu+yD2LHY5Aot7oGESkF6h8o2+/8Pyuwl sMhw== X-Gm-Message-State: AOJu0YzE62ajceTIZnn9w7hOh8/DKwxH5huzAkR6+6a9XZJjFl3vmdQ9 AmLJ/oeeSwqBM64rkNt6Pvrh+LmkydYl9mvGSBVYAOm4 X-Google-Smtp-Source: AGHT+IF6IEmVjGlT1dYeR4BRe2/E46X7O0pmmACKmWhAiLwJkaG34hq68nuSnGBAHTTap6BfAo9ZBZiMbvBEs9zdL3g= X-Received: by 2002:a05:622a:1a01:b0:405:5a1b:2767 with SMTP id f1-20020a05622a1a0100b004055a1b2767mr1382075qtb.6.1693534324273; Thu, 31 Aug 2023 19:12:04 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Don Bailey Date: Thu, 31 Aug 2023 22:11:53 -0400 Message-ID: Subject: Re: [9fans] RPi in QEMU To: 9fans <9fans@9fans.net> Content-Type: multipart/alternative; boundary=000000000000d03649060442af4c Topicbox-Policy-Reasoning: allow: sender is a member Topicbox-Message-UUID: f57ed8ae-486c-11ee-85a0-fb93d48627f4 Archived-At: =?UTF-8?B?PGh0dHBzOi8vOWZhbnMudG9waWNib3guY29tL2dyb3Vwcy85?= =?UTF-8?B?ZmFucy9UNWRhNTQ2NzA5N2U0ZWFiMi1NZWNhMWQwYzU1MmEwNjliZTJlMjY4?= =?UTF-8?B?MDVlPg==?= List-Help: List-Id: "9fans" <9fans.9fans.net> List-Post: List-Software: Topicbox v0 List-Subscribe: Precedence: list Reply-To: 9fans <9fans@9fans.net> Content-Transfer-Encoding: 7bit List-Unsubscribe: , Topicbox-Delivery-ID: 2:9fans:437d30aa-c441-11e9-8a57-d036212d11b0:522be890-2105-11eb-b15e-8d699134e1fa:Meca1d0c552a069be2e26805e:1:hVI5KARSsnjEhmaBFStefjgmSloht-0wwsPstD2i0EQ --000000000000d03649060442af4c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hmm, I've applied the patches and built the kernel. I can see the image loaded at 0x80010000, but it is spinning at address 0xffff000c; is this a sdmmc load loop? I'm using version 8.0.0 of QEMU. What version are you using, Mr. Miller? Also, since the SD takes seconds to load and not ms/us, how long are you waiting until you see something printed on the console...? Curious if I'm just running very slow, or if there is still something buggy going on... Thanks for responding and adding some patches. I am trying to follow along to make it work, if you don't mind a bit of back and forth :-) D On Thu, Aug 31, 2023 at 2:48=E2=80=AFPM Richard Miller <9fans@hamnavoe.com>= wrote: > don.bailey@gmail.com: > > So to get this back on the track of RPI emulated in QEMU =E2=80=A6 has = anyone > successfully used the Miller image with Q? > > After a bit of experimentation, I have done so, for some value of > "successfully". > > A few tweaks are required first, because QEMU's emulation of Pi hardware > and > firmware is not as faithful as it might be: > > - binary kernel file is loaded at 0x10000, not 0x8000 > - the watchdog timer doesn't work (or isn't there) > - system timer behaviour is a bit peculiar > - emulation of the SDMMC in multi-block mode is spectacularly slow > (transfers take not milliseconds but seconds) > > After tweaking as shown below, a QEMU-compatible kernel can be built with > mk CONF'=3D'pi2 9pi2.qemu > and run with something like > qemu-system-arm -M raspi2b -kernel 9pi2.qemu -serial stdio \ > -drive file=3D9pi.img,if=3Dsd,format=3Draw \ > -append 'readparts=3D1 console=3D1 *ncpu=3D1 > nobootprompt=3Dlocal!/dev/sdM0/fossil' > > For convenience I've put a kernel file on > /n/sources/contrib/miller/9pi2.qemu > > However ... > > - the DWC usb host adapter of the Pi2/3 does not work the way Plan 9 > expects > - therefore there's no functioning usb > - therefore I don't know how to attach a keyboard, mouse or network > interface > > If anybody wants to debug this further I'm happy to collaborate, but I'm > not sufficiently motivated to do it myself. > > Diffs against files in /n/sources/contrib/miller/9/bcm, which I think are > identical to 9legacy 9/bcm sources): > > mkfile: > 85a86,90 > > $p$CONF.qemu:DQ: $CONF.$O $OBJ $LIB > > $CC $CFLAGS '-DKERNDATE=3D'`{date -n} $CONF.c > > echo '# linking kernel for QEMU' > > $LD -s -l -o $target -H6 -R4096 -T0x80010000 $OBJ $CONF.$O $LIB > > > > mem.h: > 48c48 > < #define KTZERO (KZERO+0x8000) /* kernel text > start */ > --- > > #define KTZERO (KZERO+0x10000) /* kernel text > start */ > > archbcm2.c: > 225c225 > < addclock0link(wdogfeed, HZ); > --- > > //addclock0link(wdogfeed, 1000); > > sdmmc.c: > 25c25 > < Multiblock =3D 1, > --- > > Multiblock =3D 0, > > clock.c: > 35c35 > < MinPeriod =3D 10, > --- > > MinPeriod =3D 100, > 124c124 > < u32int t0, t1, tstart, tend; > --- > > u32int t0, t1, tstart; > 142d141 > < tend =3D tstart + 10000; > 145c144 > < }while(tn->clo !=3D tend); > --- > > }while(tn->clo - tstart < 10000); ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T5da5467097e4eab2-Meca1d= 0c552a069be2e26805e Delivery options: https://9fans.topicbox.com/groups/9fans/subscription --000000000000d03649060442af4c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hmm, I've applied the patches and built th= e kernel. I can see the image loaded at 0x80010000, but it is spinning at a= ddress 0xffff000c; is this a sdmmc load loop? 

I&= #39;m using version 8.0.0 of QEMU. What version are you using, Mr. Miller? = Also, since the SD takes seconds to load and not ms/us, how long are you wa= iting until you see something printed on the console...? Curious if I'm= just running very slow, or if there is still something buggy going on...&n= bsp;

Thanks for responding and adding some patch= es. I am trying to follow along to make it work, if you don't mind a bi= t of back and forth :-) 

D


On Thu, Aug 31, 2023 at 2:48 PM Richard Miller <9fans@hamnavoe.com> wrote:
don.bailey@gmail.com:
> So to get this back on the track of RPI emulated in QEMU … has = anyone successfully used the Miller image with Q?

After a bit of experimentation, I have done so, for some value of "suc= cessfully".

A few tweaks are required first, because QEMU's emulation of Pi hardwar= e and
firmware is not as faithful as it might be:

- binary kernel file is loaded at 0x10000, not 0x8000
- the watchdog timer doesn't work (or isn't there)
- system timer behaviour is a bit peculiar
- emulation of the SDMMC in multi-block mode is spectacularly slow
  (transfers take not milliseconds but seconds)

After tweaking as shown below, a QEMU-compatible kernel can be built with   mk CONF'=3D'pi2 9pi2.qemu
and run with something like
  qemu-system-arm -M raspi2b -kernel 9pi2.qemu -serial stdio \
    -drive file=3D9pi.img,if=3Dsd,format=3Draw \
    -append 'readparts=3D1 console=3D1 *ncpu=3D1 nobootprompt= =3Dlocal!/dev/sdM0/fossil'

For convenience I've put a kernel file on /n/sources/contrib/miller/9pi= 2.qemu

However ...

- the DWC usb host adapter of the Pi2/3 does not work the way Plan 9 expect= s
- therefore there's no functioning usb
- therefore I don't know how to attach a keyboard, mouse or network int= erface

If anybody wants to debug this further I'm happy to collaborate, but I&= #39;m
not sufficiently motivated to do it myself.

Diffs against files in /n/sources/contrib/miller/9/bcm, which I think are identical to 9legacy 9/bcm sources):

mkfile:
85a86,90
> $p$CONF.qemu:DQ:      $CONF.$O $OBJ $LIB
>       $CC $CFLAGS '-DKERNDATE=3D'`{date -n= } $CONF.c
>       echo '# linking kernel for QEMU'
>       $LD -s -l -o $target -H6 -R4096 -T0x80010000= $OBJ $CONF.$O $LIB
>

mem.h:
48c48
< #define       KTZERO        &n= bsp; (KZERO+0x8000)          /* kernel text start = */
---
> #define       KTZERO        &n= bsp; (KZERO+0x10000)         /* kernel text start = */

archbcm2.c:
225c225
<       addclock0link(wdogfeed, HZ);
---
>       //addclock0link(wdogfeed, 1000);

sdmmc.c:
25c25
<       Multiblock      =3D 1,
---
>       Multiblock      =3D 0,
<= br /> clock.c:
35c35
<       MinPeriod       =3D 10,<= br /> ---
>       MinPeriod       =3D 100,=
124c124
<       u32int t0, t1, tstart, tend;
---
>       u32int t0, t1, tstart;
142d141
<       tend =3D tstart + 10000;
145c144
<       }while(tn->clo !=3D tend);
---
>       }while(tn->clo - tstart < 10000);

------------------------------------------
9fans: 9fans
Permalink: https:= //9fans.topicbox.com/groups/9fans/T5da5467097e4eab2-M2edf6c6413ee49aaee7612= 81
Delivery options: https://9fans.topicbox.com/gro= ups/9fans/subscription
= --000000000000d03649060442af4c--