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,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9079 invoked from network); 22 Aug 2021 16:24:26 -0000 Received: from tb-ob0.topicbox.com (64.147.108.117) by inbox.vuxu.org with ESMTPUTF8; 22 Aug 2021 16:24:26 -0000 Received: from tb-mx1.topicbox.com (tb-mx1.nyi.icgroup.com [10.90.30.61]) by tb-ob0.topicbox.com (Postfix) with ESMTP id A093D28D76 for ; Sun, 22 Aug 2021 12:24:21 -0400 (EDT) (envelope-from bounce.mM1a557f299e542dc652b550b8.r522be890-2105-11eb-b15e-8d699134e1fa@9fans.bounce.topicbox.com) Received: by tb-mx1.topicbox.com (Postfix, from userid 1132) id 936033331AA8; Sun, 22 Aug 2021 12:24:21 -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=bIAbHRRA header.a=rsa-sha256 header.s=20161025 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=paul.a.lalonde@gmail.com smtp.helo=mail-ej1-f51.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (body 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=1629649461; bh=P2FSwN1+nC5EvgKN Q/xAdQ3aQti4oWtZOiKviYjD1mE=; b=Lvb8/cNlsORFt9fFemiz2jKDlSqeB05t tm6aUVTshzBnYbQVksR6qcUYwUCGdWnm0gYk6gujheZi93Mdgy5LGZGG7FmRDS28 QmrtSGdhlfXMF6v3rYBOHebNZF2ilLLhcmmAkaKjq4Wa/jdCt9JZRM0GsJmxoglH /IbNfkDMQmw= ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=topicbox.com; s=sysmsg-1; t= 1629649461; b=qSzhhm4qMtCqAb10q+qKMqcCda/h+KA+i4FQzTTxvsbkF9FU3+ tLSIULmd+qUnx162jdwRuGmnSPLExg8wfnOmxNG6NNM30mpD0UT1lCVZxUdsWjrD bgOH8K2eo6ecR6oV+jzW+7zPP/WkQdkZIMHBjN24or54p0IBHsNTbxpfY= Authentication-Results: topicbox.com; arc=pass; dkim=pass (2048-bit rsa key sha256) header.d=gmail.com header.i=@gmail.com header.b=bIAbHRRA header.a=rsa-sha256 header.s=20161025 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=paul.a.lalonde@gmail.com smtp.helo=mail-ej1-f51.google.com; x-internal-arc=fail (as.1.topicbox.com=pass, ams.1.topicbox.com=fail (body has been altered)) (Message modified while forwarding at Topicbox) X-Received-Authentication-Results: tb-mx0.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=bIAbHRRA header.a=rsa-sha256 header.s=20161025 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.218.51 (mail-ej1-f51.google.com); spf=pass smtp.mailfrom=paul.a.lalonde@gmail.com smtp.helo=mail-ej1-f51.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=rF++WPOK; x-me-sender=none; x-ptr=pass smtp.helo=mail-ej1-f51.google.com policy.ptr=mail-ej1-f51.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.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; bh=MiRxGhv9AFwx8v96Lfe8eW29L8B0BJnL15ezpbqecQM=; b=TVJAcrQ7+HJa QZSACTc8W6f7zqaSV0onBPl/u5FWyrB2veJIa5d2SaWd4BAyzMzHjM09lKAWGzD1 cXjPz2LII3n7UsuvY+dShIiStlWmQs7icVjTRAmYwulN/KZ3NCv6iygZWty4WYJt MIbVOdMZDsakov+7Ea8kGB5fLot/iBw= Received: from tb-mx0.topicbox.com (localhost.local [127.0.0.1]) by tb-mx0.topicbox.com (Postfix) with ESMTP id F2AF93315116 for <9fans@9fans.net>; Sun, 22 Aug 2021 12:24:10 -0400 (EDT) (envelope-from paul.a.lalonde@gmail.com) Received: from tb-mx0.topicbox.com (localhost [127.0.0.1]) by tb-mx0.topicbox.com (Authentication Milter) with ESMTP id 2F8212E5303; Sun, 22 Aug 2021 12:24:10 -0400 ARC-Seal: i=1; a=rsa-sha256; cv=none; d=topicbox.com; s=arcseal; t= 1629649450; b=GcwQc3cI7YaEOzbvaX4bG8cOXkgF78H9EsI9oTGxJPhnbxrqEA L+NxjOktPa5/6Ul9hv6MHlZ5s4u4W0K1g6fPF5lqHimkzL2DNnc9jqAYdWkU3vnV SHyChR5Qru4l1Y6vI5n0diuJTomWPnTNDTYP2vaVzC82vq9VxwOcACEf29CMVfVs g3gGyjnDn2VSo3RalEhSZJ/doxJRHBb+Mb9/zihAMKWbXNOYEcu0e0OWSC5WgzwF tqZg9y4Y2Emgh7iIavHnWcEY+m52997lICBD55kGgCSF6juuwRwL7izSGiQJ8h/P lAdX6CMRXj46H2I0CPPAMY1a6bysJi9SlURA== 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=1629649450; bh=wxC8/Xh7OhG7yO4hOGadDdeHSIwtJ8BQorgclELdsFk=; b=K7B0RycYU9DM qIhPV/5yr/rEC8puxIqVblx2/pjD58Tw0Kj9W/y9FZ9Vi3LMHG6vVhsl1/wM5ku3 FJa699Uptcp3jIiTV9dWObHtpuiFoIfgc42He0FqvdhV4Y/ee8PtSf4OsJEjynLb 7Zkoc0EcHuJcvg8cDaVtnMZjKg+VTRXSKmE4EjCVhFrwddYuWJG+5FnKW9+vgZ3P uD+Jf4T8qM5B95ylYMdUbdWnQ/D5RMmfMtsDusfhdptIX0geORV0u+DuWRtfzxpL MegBiUDrfLY9zqc4680DwSG6xS47q75zwtoIiNVub0wTTgzo/5IThlWz+kudhAqD lK6Sx+YZPQ== ARC-Authentication-Results: i=1; tb-mx0.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=bIAbHRRA header.a=rsa-sha256 header.s=20161025 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.218.51 (mail-ej1-f51.google.com); spf=pass smtp.mailfrom=paul.a.lalonde@gmail.com smtp.helo=mail-ej1-f51.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=rF++WPOK; x-me-sender=none; x-ptr=pass smtp.helo=mail-ej1-f51.google.com policy.ptr=mail-ej1-f51.google.com; x-return-mx=pass header.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.gmail-smtp-in.l.google.com); x-return-mx=pass smtp.domain=gmail.com policy.is_org=yes (MX Records found: alt3.gmail-smtp-in.l.google.com,gmail-smtp-in.l.google.com,alt2.gmail-smtp-in.l.google.com,alt4.gmail-smtp-in.l.google.com,alt1.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: gggruggvucftvghtrhhoucdtuddrgedvtddruddtfedgheejucdltddurdegudehrddttd dmucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgf nhhsuhgsshgtrhhisggvpdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttd enucenucfjughrpeggfhgjhfffkffuvfgtsegrtderredttdejnecuhfhrohhmpefrrghu lhcunfgrlhhonhguvgcuoehprghulhdrrgdrlhgrlhhonhguvgesghhmrghilhdrtghomh eqnecuggftrfgrthhtvghrnhephedttdejffehffejkefhudffudetheegfeehteehvdfg jeeuhefhgfeuleeiveevnecuffhomhgrihhnpegrmhgurdgtohhmpdhtohhpihgtsghogi drtghomhenucfkphepvddtledrkeehrddvudekrdehudenucevlhhushhtvghrufhiiigv pedtnecurfgrrhgrmhepihhnvghtpedvtdelrdekhedrvddukedrhedupdhhvghlohepmh grihhlqdgvjhduqdhfhedurdhgohhoghhlvgdrtghomhdpmhgrihhlfhhrohhmpeeophgr uhhlrdgrrdhlrghlohhnuggvsehgmhgrihhlrdgtohhmqe X-ME-VSScore: 0 X-ME-VSCategory: clean Received-SPF: pass (gmail.com ... _spf.google.com: Sender is authorized to use 'paul.a.lalonde@gmail.com' in 'mfrom' identity (mechanism 'include:_netblocks.google.com' matched)) receiver=tb-mx0.topicbox.com; identity=mailfrom; envelope-from="paul.a.lalonde@gmail.com"; helo=mail-ej1-f51.google.com; client-ip=209.85.218.51 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tb-mx0.topicbox.com (Postfix) with ESMTPS for <9fans@9fans.net>; Sun, 22 Aug 2021 12:24:10 -0400 (EDT) (envelope-from paul.a.lalonde@gmail.com) Received: by mail-ej1-f51.google.com with SMTP id e21so15633013ejz.12 for <9fans@9fans.net>; Sun, 22 Aug 2021 09:24:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=wxC8/Xh7OhG7yO4hOGadDdeHSIwtJ8BQorgclELdsFk=; b=rF++WPOKfS+uC4ddxabnFkYgzoc2CTJ9S37m4uN6Do8y9xWjDL/f8c7KDWWFJtFnb/ n0TAEibNi/K4TLlUOS38Qw7PVqxxwbiB/jLo2EHPEXRKV8TclKegawOXKWsZsZ4IpUBd rux8S1nJcmQ8FdrC/q+gP6CC4ypr+y1DjwK8+cKRoAcTzlWzvux4gUWMJ+XlOu1l9ORL /PcmN7kxCC6dOQMdnSwvHesW4spzfUuR5PbpzyI732yznaSMneLb5YLRvrSnSY2h7bfY 7psJ7JIbL6R67eYyIQMbiLwMcVfKz65hlPt1XtSlfDR1lIf8tlIe93PFbc8wvrxbZ1Cv GJ/A== X-Gm-Message-State: AOAM532nBcBHHVnjhv/Hf+IAcn41mckZWyDXOx6UazAnuCbD6BlzpR/J wUd+NQpv5NQSuSgaVTht8a0urAHvee9wrW/iyi8hAV8gpNo= X-Google-Smtp-Source: ABdhPJzjGKZSkVe9g82LN4MtkQTgDfivw7O5ZaoSVjv1o1Accar5vhdb/3E8IYVZP17no/LIoTbjG+cYHTodMArELi0= X-Received: by 2002:a17:906:144e:: with SMTP id q14mr32020297ejc.19.1629649448889; Sun, 22 Aug 2021 09:24:08 -0700 (PDT) MIME-Version: 1.0 References: <92764e35-f5cf-460a-91df-050ba471e6dd@sirjofri.de> <9352EE7C-AE94-4C1C-8738-5A1DA8ECE5A7@iitbombay.org> In-Reply-To: <9352EE7C-AE94-4C1C-8738-5A1DA8ECE5A7@iitbombay.org> From: Paul Lalonde Date: Sun, 22 Aug 2021 09:23:56 -0700 Message-ID: Subject: Re: [9fans] Drawterm GPU (was: Software philosophy) To: 9fans <9fans@9fans.net> Content-Type: multipart/alternative; boundary="00000000000082810905ca285498" Topicbox-Policy-Reasoning: allow: sender is a member Topicbox-Message-UUID: 64ab3e4c-0365-11ec-be75-b002c77f2173 Archived-At: =?UTF-8?B?PGh0dHBzOi8vOWZhbnMudG9waWNib3guY29tL2dyb3Vwcy85?= =?UTF-8?B?ZmFucy9UYWQyOWJmYzIyM2RjNGZiZS1NMWE1NTdmMjk5ZTU0MmRjNjUyYjU1?= =?UTF-8?B?MGI4Pg==?= 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:M1a557f299e542dc652b550b8:1:8dZtSIgBwwBO9bEp4FYG-K0IYTlV73r7dug-0jqFdD8 --00000000000082810905ca285498 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable It got complicated because there's no stable interface or ISA. The hardware evolved from fixed-function to programmable in a commercial environment where the only meaningful measure was raw performance per dollar at many price points. Every year the hardware spins and becomes more performant, usually faster than Moore's law. With 3D APIs hiding the hardware details there is no pressure to make the hardware interface uniform, pretty, or neat. And with the need for performance there are dozens of fixed function units that effectively need their own sub-drivers while coordinating at high performance with the other units. The system diagrams for GPUs look complex, but they are radical simplifications of what's really on the inside. Intel really pioneered the open driver stacks, but performance generally wasn't there. That might be changing now, but I don't know if their recently announced discrete product line will be driver-compatible. Paul On Sun, Aug 22, 2021 at 8:48 AM Bakul Shah wrote: > The FreeBSD amdgpu.ko is over 3Mbytes of compiled code. Not counting the > "firmware" that gets loaded on the GPU board. drm/amd/amdgpu has 200K+ > lines of source code. drm/amd over 2M lines of code. Intel's i915 seems to > be about 1/10th the amd size. AIUI, this is linux GPU driver code, more or > less unchanged (FreeBSD has shim code to use it). How did the interface to > an SIMD processor get so complicated? > > On Aug 22, 2021, at 6:44 AM, Paul Lalonde > wrote: > > I'd love to see GPU support for Plan9. This discussion falls right into > my professional capacity. I'll say that people generally *grossly* > underestimate the complexity of a modern GPU and of its supporting softwa= re > stack. The GPU driver is effectively a second operating system with shar= ed > memory and DMA interfaces to the host. Even bringing up a modern GPU for > just compute tasks is a very large endeavour. > > That being said, if you want real hardware support, the best place to > start is currently AMD's open-source stack. Ignoring the Vulkan bit, > understanding their platform abstraction layer (PAL) and shader ISA ( > https://developer.amd.com/wp-content/resources/Vega_Shader_ISA_28July2017= .pdf) > is the base. The lower hardware levels are reasonably well-described in > linux's libdrm and its AMD support in amdgpu. > > Opinions on how to bring this to Plan9? I don't really have any - it's a > huge pile of work with minimal benefit. If you're looking for lightweight > graphics, WebGL is a doable path, and almost certainly the right way to > experiment with Plan9-like interfaces to graphics hardware. > > Paul > > > > On Sun, Aug 22, 2021 at 5:30 AM sirjofri > wrote: > >> >> 22.08.2021 14:10:20 Stuart Morrow : >> > Also: >> >> people have discussed that for years >> > >> > They have? I mean I might have seen occasionally someone vaguely >> > going "some sort of GPU support would be cool to have". That isn't >> > discussion. >>=20 >> I've even heard of someone actually making GPU stuff work on plan 9. I've >> only heard from their partner, who made a cute glenda thing on a piece of >> cloth. I chatted with her a little and told her she should encourage her >> partner for some discussion about this in our channels. It looked like >> it's some academic work, but I don't know any details about it. >>=20 >> Worst case, someone already has a proper and good GPU implementation for >> Plan 9 and nobody knows about it. >>=20 >> sirjofri >>=20 >> Btw if the said person reads this: it would be nice to learn some >> details. > > > > -- Bakul > > *9fans * / 9fans / see discussions > + participants > + delivery options > Permalink > > ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/Tad29bfc223dc4fbe-M1a557= f299e542dc652b550b8 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription --00000000000082810905ca285498 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
It got complicated because there's no stab= le interface or ISA.  The hardware evolved from fixed-function to prog= rammable in a commercial environment where the only meaningful measure was = raw performance per dollar at many price points.  Every year the hardw= are spins and becomes more performant, usually faster than Moore's law.=   With 3D APIs hiding the hardware details there is no pressure to mak= e the hardware interface uniform, pretty, or neat.  And with the need = for performance there are dozens of fixed function units that effectively n= eed their own sub-drivers while coordinating at high performance with the o= ther units. 
The system diagrams for GPUs look complex, but they = are radical simplifications of what's really on the inside.

<= /div>
Intel really pioneered the open driver stacks, but performance ge= nerally wasn't there.  That might be changing now, but I don't= know if their recently announced discrete product line will be driver-comp= atible.

Paul

<= br />
On Su= n, Aug 22, 2021 at 8:48 AM Bakul Shah <bakul@iitbombay.org> wrote:
The FreeBSD amdgpu.ko is over 3Mbytes o= f compiled code. Not counting the "firmware" that gets loaded on = the GPU board. drm/amd/amdgpu has 200K+ lines of source code. drm/amd over = 2M lines of code. Intel's i915 seems to be about 1/10th the amd size. A= IUI, this is linux GPU driver code, more or less unchanged (FreeBSD has shi= m code to use it). How did the interface to an SIMD processor get so compli= cated?

On Aug 22, 2021, at 6:= 44 AM, Paul Lalonde <paul.a.lalonde@gmail.com> wrote:

I'd love to see  GPU support for Plan9.  This discu= ssion falls right into my professional capacity.  I'll say that pe= ople generally *grossly* underestimate the complexity of a modern GPU and o= f its supporting software stack.  The GPU driver is effectively a seco= nd operating system with shared memory and DMA interfaces to the host. = ; Even bringing up a modern GPU for just compute tasks is a very large ende= avour.

That being said, if you want real hardware= support, the best place to start is currently AMD's open-source stack.=   Ignoring the Vulkan bit, understanding their platform abstraction la= yer (PAL) and shader ISA (https://develope= r.amd.com/wp-content/resources/Vega_Shader_ISA_28July2017.pdf) is the b= ase.  The lower hardware levels are reasonably well-described in = linux's libdrm and its AMD support in amdgpu.

Opinions on how to bring this to Plan9?  I don't really have any= - it's a huge pile of work with minimal benefit.  If you're l= ooking for lightweight graphics, WebGL is a doable path, and almost certain= ly the right way to experiment with Plan9-like interfaces to graphics hardw= are.

Paul



On Sun, Aug 22, 2021 at 5:30 AM sirjofri <sirjofri+ml-9fans@sirjofri.de= > wrote:
22.08.2021 14:10:20 Stuart Morrow <morrow.stuart@gmail.com>:
> Also:
>> people have discussed that for years
>
> They have?  I mean I might have seen occasionally someone vaguely=
> going "some sort of GPU support would be cool to have". = ; That isn't
> discussion.

I've even heard of someone actually making GPU stuff work on plan 9. I&= #39;ve
only heard from their partner, who made a cute glenda thing on a piece of <= br /> cloth. I chatted with her a little and told her she should encourage her partner for some discussion about this in our channels. It looked like
it's some academic work, but I don't know any details about it.

Worst case, someone already has a proper and good GPU implementation for Plan 9 and nobody knows about it.

sirjofri

Btw if the said person reads this: it would be nice to learn some
details.

------------------------------------------
9fans: 9fans
Permalink: https:= //9fans.topicbox.com/groups/9fans/Tad29bfc223dc4fbe-Md3d5cd693c12f948ad4720= bc
Delivery options: https://9fans.topicbox.com/gro= ups/9fans/subscription



-- Bakul

= --00000000000082810905ca285498--