From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by mx.groups.io with SMTP id smtpd.web11.6814.1643375240086441330 for ; Fri, 28 Jan 2022 05:07:20 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=jb3nsbP+; spf=pass (domain: gmail.com, ip: 209.85.128.53, mailfrom: grao.v80@gmail.com) Received: by mail-wm1-f53.google.com with SMTP id l12-20020a7bc34c000000b003467c58cbdfso8162317wmj.2 for ; Fri, 28 Jan 2022 05:07:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nUHk5/CkbLuTXlSklX97+esm4C1ev22U5NFRJ+95V7A=; b=jb3nsbP+tsG11HkfWs5vahsbEu+Md/PL3cZ+kjknlyMUoOOnqvrIuZoLz8gD6NjH4q a8YOThQEcSPbg+X2n3VgOWP0rjjF7z3sDgV2o4hwElmMiUhgFDJoBlI7S1TVRYN2p+jv TxEIVzsApb2qJDXQhcHboQ/cOV7r+VqMeORLae/SqzAsZEoWLk8dtYpIQllGvSuJ7eiC dHyT717cWKqCDsZ2jTW9xCWJH7fK2szvKC8PeSZDSe6V+TSYKHpBoaOo64BlZX+qq3WI 7zQvrXN92eN+1pRdascPMjkozQNUldA3bLdXEqSsPvK4ndSlX875gUkzOKl6lGekdfxv TPeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nUHk5/CkbLuTXlSklX97+esm4C1ev22U5NFRJ+95V7A=; b=SJyi7B19yz5zKBdVs6HG6nIhrSkVzk0mpU90O2woRr1y5cxqek3h/CGhU4s2+ZlMWm BpNz9R7xNhGGR1N4Ra31yxnptNPD5xYg0aIriZg2bm+o9H7tv35iRzBV7vXw/Zf2pL4W G8tEv35VzWRd9QU9zWA8aizZB+fdnMdK4/g4B+p+VH2VaVJGwRvNujYz+RUnwnI+z60r o3Umv4Ij6r43rL3+ZvjmgfISJPKz6Wy93fdBeCfg1qyWJ6crfzJFyOUUz/W62SeoTHn6 94kzZqXfv+C/euZ77pyNx8ftw/ZEEcEuq2gLhSey7ZXYbihzluHWr4XhYBqjQ8S/+rmS etQA== X-Gm-Message-State: AOAM53285wHPWeFDI29pbq9o1rxFCEab8OJ7+3tlyeknh+/3hDFDAipt wQgjsSIX1ppoUv/21C3NEbs131SmqoYQmu1JGcg= X-Google-Smtp-Source: ABdhPJwPAgWrrN+O6jmpwbX3zxwn/Dh5q0WfYU+7dsVj6PD0Nyie4Rx6sxTkkXwlQ7RZKrY4zYsmWQ18QE8UjpZOCdk= X-Received: by 2002:a7b:cbce:: with SMTP id n14mr15937494wmi.90.1643375238436; Fri, 28 Jan 2022 05:07:18 -0800 (PST) MIME-Version: 1.0 References: <735241e7-8ada-0fb0-e035-0a88d0800403@ipxe.org> In-Reply-To: <735241e7-8ada-0fb0-e035-0a88d0800403@ipxe.org> From: "Rao G" Date: Fri, 28 Jan 2022 13:08:20 +0000 Message-ID: Subject: Re: [edk2-devel] Read SPI BAR offset 0x10 throwing processor exception To: Michael Brown Cc: devel@edk2.groups.io Content-Type: multipart/alternative; boundary="00000000000051da4805d6a41de8" --00000000000051da4805d6a41de8 Content-Type: text/plain; charset="UTF-8" Hi Michael, SpiInstance->PchSpiBase = MmPciBase ( DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_SPI, PCI_FUNCTION_NUMBER_PCH_SPI ); DEBUG ((DEBUG_INFO, "PchSpiBase at 0x%x\n", SpiInstance->PchSpiBase)); >> returns PchSpiBase as 0xC00FD000 (Bus 0 Dev 1F Func 0) ScSpiBar0 = MmioRead32 (SpiInstance->PchSpiBase + PCI_BASE_ADDRESSREG_OFFSET) & 0xFFFFF000; >> this should return value at 0xC00FD010 Hope it appears to be a standard code and accessing through MMIO library should work Thanks Ranga On Fri, Jan 28, 2022 at 12:59 PM Michael Brown wrote: > On 28/01/2022 12:47, Rao G wrote: > > Attempting to Read SPIBAR 0x10 from BUS 0 Dev 1F Func 5 > > > > >> > > ScSpiBar0 = MmioRead32 (SpiInstance->PchSpiBase + > > PCI_BASE_ADDRESSREG_OFFSET) & 0xFFFFF000; > > >> > > > > The above code is throwing exception > > > > PchSpiBase at 0xC00FD000 > > !!!! X64 Exception Type - 0E(#PF - Page-Fault) CPU Apic ID - 00000000 > !!!! > > ExceptionData - 0000000000000000 I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 SGX:0 > > RIP - 00000000771903D0, CS - 0000000000000038, RFLAGS - > 0000000000010046 > > > > From the shell the value at offset 0x10 is 0xFE010000 > > > > Any clues on why the processor is throwing exception while accessing the > > value PchSpiBase+0x10 ? > > PCI_BASE_ADDRESSREG_OFFSET is an offset within PCI configuration space. > It looks as though you are trying to use an MMIO access to read from > PCI configuration space, which is not a valid thing to do. > > I suspect you may want to use EFI_PCI_IO_PROTOCOL.Pci.Read() instead. > > HTH, > > Michael > --00000000000051da4805d6a41de8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Michael,

SpiI= nstance->PchSpiBase =3D MmPciBase (
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 D= EFAULT_PCI_BUS_NUMBER_PCH,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PCI_DEVICE_NUMB= ER_PCH_SPI,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PCI_FUNCTION_NUMBER_PCH_SPI=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 );
DEBUG ((DEBUG_INFO, "PchSpi= Base at 0x%x\n", SpiInstance->PchSpiBase));
>> returns Pch= SpiBase as 0xC00FD000 (Bus 0 Dev 1F Func 0)

ScSpiB= ar0 =3D MmioRead32 (SpiInstance->PchSpiBase + PCI_BASE_ADDRESSREG_OFFSET= ) & 0xFFFFF000;
>> this should return value at 0xC0= 0FD010

Hope it appears to be a standard code and a= ccessing through MMIO library should work

Thanks
Ranga

On Fri, Jan 28, 2022 at 12:59 PM Michael Brown <mcb30@ipxe.org> wrote:
On 28/01/2022 12:47, Rao G wrot= e:
> Attempting to Read SPIBAR 0x10 from BUS 0 Dev 1F Func 5
>
>=C2=A0 >>
> ScSpiBar0 =3D MmioRead32 (SpiInstance->PchSpiBase +
> PCI_BASE_ADDRESSREG_OFFSET) & 0xFFFFF000;
>=C2=A0 >>
>
> The above code is throwing exception
>
> PchSpiBase at 0xC00FD000
> !!!! X64 Exception Type - 0E(#PF - Page-Fault) =C2=A0CPU Apic ID - 000= 00000 !!!!
> ExceptionData - 0000000000000000 =C2=A0I:0 R:0 U:0 W:0 P:0 PK:0 SS:0 S= GX:0
> RIP =C2=A0- 00000000771903D0, CS =C2=A0- 0000000000000038, RFLAGS - 00= 00000000010046
>
>=C2=A0 From the shell the value at offset 0x10 is 0xFE010000
>
> Any clues on why the processor is throwing exception while accessing t= he
> value PchSpiBase+0x10 ?

PCI_BASE_ADDRESSREG_OFFSET is an offset within PCI configuration space. =C2=A0 It looks as though you are trying to use an MMIO access to read from=
PCI configuration space, which is not a valid thing to do.

I suspect you may want to use EFI_PCI_IO_PROTOCOL.Pci.Read() instead.

HTH,

Michael
--00000000000051da4805d6a41de8--