2008-02-22 09:58:35

by Alan

[permalink] [raw]
Subject: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

> Signed-off-by: Crane Cai <[email protected]>
> Acked-by: Jeff Garzik <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>

Vomitted-upon-by: Alan Cox <[email protected]>

> - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
> - u8 tmp;
> + /* set sb600/sb700/sb800 sata to ahci mode */
> + u8 tmp;
>
> + pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
> + if (tmp == 0x01) {

CLASS_DEVICE is cached in pdev->class so why not simply do:

if (pdev->class & (1 << 8))


2008-02-22 10:11:59

by Alan

[permalink] [raw]
Subject: Re: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

On Fri, 22 Feb 2008 09:48:28 +0000
Alan Cox <[email protected]> wrote:

> > Signed-off-by: Crane Cai <[email protected]>
> > Acked-by: Jeff Garzik <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
> Vomitted-upon-by: Alan Cox <[email protected]>
>
> > - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
> > - u8 tmp;
> > + /* set sb600/sb700/sb800 sata to ahci mode */
> > + u8 tmp;
> >
> > + pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
> > + if (tmp == 0x01) {
>
> CLASS_DEVICE is cached in pdev->class so why not simply do:
>
> if (pdev->class & (1 << 8))

or better yet

((pdev->class & 0xFF00) == 0x0100)

;)
--
Gnome #3319

2008-02-22 10:34:51

by Jiri Slaby

[permalink] [raw]
Subject: Re: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

On 02/22/2008 11:02 AM, Alan Cox wrote:
> On Fri, 22 Feb 2008 09:48:28 +0000
> Alan Cox <[email protected]> wrote:
>
>>> Signed-off-by: Crane Cai <[email protected]>
>>> Acked-by: Jeff Garzik <[email protected]>
>>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>> Vomitted-upon-by: Alan Cox <[email protected]>
>>
>>> - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
>>> - u8 tmp;
>>> + /* set sb600/sb700/sb800 sata to ahci mode */
>>> + u8 tmp;
>>>
>>> + pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
>>> + if (tmp == 0x01) {
>> CLASS_DEVICE is cached in pdev->class so why not simply do:
>>
>> if (pdev->class & (1 << 8))
>
> or better yet
>
> ((pdev->class & 0xFF00) == 0x0100)

Isn't it what was there before the change:
>>> - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
>>> - u8 tmp;
and there was some reason to change it?

2008-02-25 22:53:34

by Jeff Garzik

[permalink] [raw]
Subject: Re: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

Alan Cox wrote:
>> Signed-off-by: Crane Cai <[email protected]>
>> Acked-by: Jeff Garzik <[email protected]>
>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
> Vomitted-upon-by: Alan Cox <[email protected]>
>
>> - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
>> - u8 tmp;
>> + /* set sb600/sb700/sb800 sata to ahci mode */
>> + u8 tmp;
>>
>> + pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
>> + if (tmp == 0x01) {
>
> CLASS_DEVICE is cached in pdev->class so why not simply do:
>
> if (pdev->class & (1 << 8))

I agree. I [obviously] missed this when I ack'd, mainly ack'ing the
overall change.

BIOS certainly may modify that PCI config register, but that's before
the kernel boots. So, using pdev->class is fine.

Jeff


2008-02-26 02:16:16

by Crane Cai

[permalink] [raw]
Subject: Re: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

在 2008-02-26Tue的 06:53 +0800,Jeff Garzik写道:
> Alan Cox wrote:
> >> Signed-off-by: Crane Cai <[email protected]>
> >> Acked-by: Jeff Garzik <[email protected]>
> >> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> >
> > Vomitted-upon-by: Alan Cox <[email protected]>
> >
> >> - if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
> >> - u8 tmp;
> >> + /* set sb600/sb700/sb800 sata to ahci mode */
> >> + u8 tmp;
> >>
> >> + pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
> >> + if (tmp == 0x01) {
> >
> > CLASS_DEVICE is cached in pdev->class so why not simply do:
> >
> > if (pdev->class & (1 << 8))
>
> I agree. I [obviously] missed this when I ack'd, mainly ack'ing the
> overall change.
>
> BIOS certainly may modify that PCI config register, but that's before
> the kernel boots. So, using pdev->class is fine.
>
> Jeff

pdev->class is also quirked when resume. We need to reread PCI
configuation on resume.

2008-02-26 12:55:45

by Alan

[permalink] [raw]
Subject: Re: GAK!!!! Re: PCI: AMD SATA IDE mode quirk

> I agree. I [obviously] missed this when I ack'd, mainly ack'ing the
> overall change.
>
> BIOS certainly may modify that PCI config register, but that's before
> the kernel boots. So, using pdev->class is fine.

I don't think the resume quirk is needed either as the core PCI
save/restore code rewrites the PCI registers so should be rewriting the
class back on resume as well.