tech-kern archive

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

Re: pchb@acpi again



On Mon, Apr 22, 2013 at 09:21:50PM +0900, KIYOHARA Takashi wrote:
> Hi!
> 
> 
> From: Chuck Silvers <chuq%chuq.com@localhost>
> Date: Sun, 21 Apr 2013 08:33:24 -0700
> 
> > On Mon, Apr 15, 2013 at 09:14:51PM +0900, KIYOHARA Takashi wrote:
> > > > > > in acpi_pci.c, why do you need to skip the check for ACPI_VALID_ADR?
> > > > > > does the ACPI info on ia64 not have that flag set when it should?
> > > > > 
> > > > > In my memory, YES.  :-<
> > > > > But I can't access to my ia64 now.  I will try and check at next 
> > > > > weekend.
> > > > 
> > > > In my ia64(zx6000), it looked that AcpiNsSearchAndEnter() returned
> > > > AE_NOT_FOUND.
> > > > How enable ACPI_DEBUG_PRINT or others many print?
> > > 
> > > I look this messages on my ia64. (e.g. PCI0)
> > > 
> > > _ADR Not found in 0xe00000003f9dd1e8 [Not adding]
> > > Name [_ADR] not found in scope [PCI0] 0xe00000003f9dd1e8
> > > 
> > > 
> > > I think that no this problem crops up by all ia64 machines.  Do you know
> > > the better evasion method?
> > > # Can I fixup by acpi_md_callback()?  I look and find that now.
> > 
> > I was thinking that acpi_md_callback() was called before the code where you
> > removed the check for ACPI_VALID_ADR, so you could have acpi_md_callback()
> > walk through the device tree constructed by acpi_build_tree() and set
> > ACPI_VALID_ADR on any devices where it was missing, as well as initializing
> > ad->ad_devinfo->Address.  but the check for ACPI_VALID_ADR in question is in
> > acpi_pcidev_scan(), which is called at the end of acpi_build_tree(),
> > so it's actually called before acpi_md_callback() is called.
> > 
> > it happens that ad->ad_devinfo->Address will be zero if ACPI_VALID_ADR
> > isn't set, I guess that value is actually correct on your system?
> 
> By my ia64 machine, it cannot ensure that address of pchb is right.
> I checked the boot log(typescript) of FreeBSD and Debian.
> FreeBSD had returned AE_NOT_FOUND.  The value of device and function
> was not displayed in Linux.
> 
>   http://ftp.netbsd.org/pub/NetBSD/misc/kiyohara/ia64/typescript.FreeBSD_ia64
>   http://ftp.netbsd.org/pub/NetBSD/misc/kiyohara/ia64/typescript.ia64.debian

if you don't know the right value for ad->ad_devinfo->Address should be,
how would you know how to set ap->ap_device and ap->ap_function?
setting those two fields are what ad->ad_devinfo->Address is used for
in acpi_pcidev_scan().  if you know how you should set those fields,
then I think you should be able to just initialize ad->ad_devinfo->Address
and set ACPI_VALID_ADR in ad->ad_devinfo->Valid.

I looked at the diff you sent later, but it wasn't clear how that
was supposed to work.  could you also send the ia64 version of that
new callback so we can see how the MI and MD parts would fit together?

-Chuck


Home | Main Index | Thread Index | Old Index