Re: 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325 - Kernel

This is a discussion on Re: 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325 - Kernel ; On Tue, 25 Sep 2007 13:53:51 +0200 "Rafael J. Wysocki" wrote: > Hi, > > This patch from Andi: > > x86_64-mm-cpa-einval.patch > > makes the hda_intel audio driver stop working on my HP nx6325. > > The following line ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: Re: 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325

  1. Re: 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325

    On Tue, 25 Sep 2007 13:53:51 +0200 "Rafael J. Wysocki" wrote:

    > Hi,
    >
    > This patch from Andi:
    >
    > x86_64-mm-cpa-einval.patch
    >
    > makes the hda_intel audio driver stop working on my HP nx6325.
    >
    > The following line appears in dmesg (from 2.6.23-rc7-mm1:
    >
    > ALSA /home/rafael/src/mm/linux-2.6.23-rc7-mm1/sound/pci/hda/hda_intel.c:1755: hd
    > a-intel: ioremap error
    >
    > and the driver doesn't work afterwards.
    >
    > Still, I'm not sure if the patch above is wrong or rather it exposes a problem
    > in the driver.
    >


    Mysterious.

    ioremap_nocache() does __ioremap(..., _PAGE_PCD);, then __ioremap() does
    ioremap_page_range(..., _PAGE_PCD | other_stuff) That's one.

    __ioremap() then does ioremap_change_attr(..., _PAGE_PCD);. That's two.

    So I _think_ we're setting _PAGE_PCD twice on those pte's? Unclear. The
    implementation is rather different from i386, too.

    I dunno why __change_page_attr() failed though. Perhaps this, in
    change_page_attr_addr():

    if (!kernel_map || pte_present(pfn_pte(0, prot))) {

    should be &&

    Andi's taking a bit of time off, so we may need to park this until he
    resurfaces.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [discuss] 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325

    >>> Andrew Morton 25.09.07 18:08 >>>
    >On Tue, 25 Sep 2007 13:53:51 +0200 "Rafael J. Wysocki" wrote:
    >
    >> Hi,
    >>
    >> This patch from Andi:
    >>
    >> x86_64-mm-cpa-einval.patch
    >>
    >> makes the hda_intel audio driver stop working on my HP nx6325.
    >>
    >> The following line appears in dmesg (from 2.6.23-rc7-mm1:
    >>
    >> ALSA /home/rafael/src/mm/linux-2.6.23-rc7-mm1/sound/pci/hda/hda_intel.c:1755: hd
    >> a-intel: ioremap error
    >>
    >> and the driver doesn't work afterwards.
    >>
    >> Still, I'm not sure if the patch above is wrong or rather it exposes a problem
    >> in the driver.
    >>

    >
    >Mysterious.
    >
    >ioremap_nocache() does __ioremap(..., _PAGE_PCD);, then __ioremap() does
    >ioremap_page_range(..., _PAGE_PCD | other_stuff) That's one.
    >
    >__ioremap() then does ioremap_change_attr(..., _PAGE_PCD);. That's two.
    >
    >So I _think_ we're setting _PAGE_PCD twice on those pte's? Unclear. The
    >implementation is rather different from i386, too.
    >
    >I dunno why __change_page_attr() failed though. Perhaps this, in
    >change_page_attr_addr():
    >
    > if (!kernel_map || pte_present(pfn_pte(0, prot))) {
    >
    >should be &&


    Definitely not, and this code has been that way for a while.

    I rather suspect this change

    - if (!kpte) return 0;
    + if (!kpte)
    + return -EINVAL;

    to be the reason for the failure (and I had already sent a comment to this
    respect to Andi upon his review request).

    Jan

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [discuss] 2.6.23-rc8-mm1, -rc7-mm1 kill audio on HP nx6325

    On Wed, 2007-09-26 at 08:32 +0100, Jan Beulich wrote:
    > >ioremap_nocache() does __ioremap(..., _PAGE_PCD);, then __ioremap() does
    > >ioremap_page_range(..., _PAGE_PCD | other_stuff) That's one.
    > >
    > >__ioremap() then does ioremap_change_attr(..., _PAGE_PCD);. That's two.
    > >
    > >So I _think_ we're setting _PAGE_PCD twice on those pte's? Unclear. The
    > >implementation is rather different from i386, too.
    > >
    > >I dunno why __change_page_attr() failed though. Perhaps this, in
    > >change_page_attr_addr():
    > >
    > > if (!kernel_map || pte_present(pfn_pte(0, prot))) {
    > >
    > >should be &&

    >
    > Definitely not, and this code has been that way for a while.
    >
    > I rather suspect this change
    >
    > - if (!kpte) return 0;
    > + if (!kpte)
    > + return -EINVAL;
    >
    > to be the reason for the failure (and I had already sent a comment to this
    > respect to Andi upon his review request).


    This change exposes the problem. The question is why we do not have a
    page table entry for the address, which was mapped right before that.

    tglx


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread