* [PATCH] PNPACPI: fix types when decoding ACPI resources [resend]
@ 2005-08-02 15:55 Bjorn Helgaas
2005-08-03 1:01 ` Shaohua Li
2005-08-03 1:05 ` [ACPI] " Kenji Kaneshige
0 siblings, 2 replies; 14+ messages in thread
From: Bjorn Helgaas @ 2005-08-02 15:55 UTC (permalink / raw)
To: Adam Belay; +Cc: Matthieu Castet, Li Shaohua, acpi-devel, linux-kernel
Any objections to the patch below? I posted it last Wednesday,
but haven't heard anything. Once we have this fix, 8250_pnp
should have sufficient functionality that we can get rid of
8250_acpi.
Use types that match the ACPI resource structures. Previously
the u64 value from an RSTYPE_ADDRESS64 was passed as an int,
which corrupts the value.
This is one of the things that prevents 8250_pnp from working
on HP ia64 boxes. After 8250_pnp works, we will be able to
remove 8250_acpi.c.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Index: work/drivers/pnp/pnpacpi/rsparser.c
===================================================================
--- work.orig/drivers/pnp/pnpacpi/rsparser.c 2005-07-25 15:04:26.000000000 -0600
+++ work/drivers/pnp/pnpacpi/rsparser.c 2005-07-27 10:02:19.000000000 -0600
@@ -73,7 +73,7 @@
}
static void
-pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, int irq)
+pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, u32 irq)
{
int i = 0;
while (!(res->irq_resource[i].flags & IORESOURCE_UNSET) &&
@@ -85,13 +85,13 @@
res->irq_resource[i].flags |= IORESOURCE_DISABLED;
return;
}
- res->irq_resource[i].start =(unsigned long) irq;
- res->irq_resource[i].end = (unsigned long) irq;
+ res->irq_resource[i].start = irq;
+ res->irq_resource[i].end = irq;
}
}
static void
-pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, int dma)
+pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, u32 dma)
{
int i = 0;
while (i < PNP_MAX_DMA &&
@@ -103,14 +103,14 @@
res->dma_resource[i].flags |= IORESOURCE_DISABLED;
return;
}
- res->dma_resource[i].start =(unsigned long) dma;
- res->dma_resource[i].end = (unsigned long) dma;
+ res->dma_resource[i].start = dma;
+ res->dma_resource[i].end = dma;
}
}
static void
pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res,
- int io, int len)
+ u32 io, u32 len)
{
int i = 0;
while (!(res->port_resource[i].flags & IORESOURCE_UNSET) &&
@@ -122,14 +122,14 @@
res->port_resource[i].flags |= IORESOURCE_DISABLED;
return;
}
- res->port_resource[i].start = (unsigned long) io;
- res->port_resource[i].end = (unsigned long)(io + len - 1);
+ res->port_resource[i].start = io;
+ res->port_resource[i].end = io + len - 1;
}
}
static void
pnpacpi_parse_allocated_memresource(struct pnp_resource_table * res,
- int mem, int len)
+ u64 mem, u64 len)
{
int i = 0;
while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) &&
@@ -141,8 +141,8 @@
res->mem_resource[i].flags |= IORESOURCE_DISABLED;
return;
}
- res->mem_resource[i].start = (unsigned long) mem;
- res->mem_resource[i].end = (unsigned long)(mem + len - 1);
+ res->mem_resource[i].start = mem;
+ res->mem_resource[i].end = mem + len - 1;
}
}
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-02 15:55 [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] Bjorn Helgaas @ 2005-08-03 1:01 ` Shaohua Li 2005-08-03 15:20 ` [ACPI] " Bjorn Helgaas 2005-08-03 1:05 ` [ACPI] " Kenji Kaneshige 1 sibling, 1 reply; 14+ messages in thread From: Shaohua Li @ 2005-08-03 1:01 UTC (permalink / raw) To: Bjorn Helgaas; +Cc: Adam Belay, Matthieu Castet, acpi-devel, linux-kernel On Tue, 2005-08-02 at 09:55 -0600, Bjorn Helgaas wrote: > Any objections to the patch below? I posted it last Wednesday, > but haven't heard anything. Once we have this fix, 8250_pnp > should have sufficient functionality that we can get rid of > 8250_acpi. > > > > Use types that match the ACPI resource structures. Previously > the u64 value from an RSTYPE_ADDRESS64 was passed as an int, > which corrupts the value. > > This is one of the things that prevents 8250_pnp from working > on HP ia64 boxes. After 8250_pnp works, we will be able to > remove 8250_acpi.c. We might always use 'unsigned long'. Did you have plan to remove other legacy acpi drivers? Thanks, Shaohua ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 1:01 ` Shaohua Li @ 2005-08-03 15:20 ` Bjorn Helgaas 2005-08-03 21:16 ` matthieu castet 2005-08-04 0:46 ` Shaohua Li 0 siblings, 2 replies; 14+ messages in thread From: Bjorn Helgaas @ 2005-08-03 15:20 UTC (permalink / raw) To: acpi-devel; +Cc: Shaohua Li, Adam Belay, Matthieu Castet, linux-kernel On Tuesday 02 August 2005 7:01 pm, Shaohua Li wrote: > On Tue, 2005-08-02 at 09:55 -0600, Bjorn Helgaas wrote: > > Any objections to the patch below? I posted it last Wednesday, > > but haven't heard anything. Once we have this fix, 8250_pnp > > should have sufficient functionality that we can get rid of > > 8250_acpi. > > > > Use types that match the ACPI resource structures. Previously > > the u64 value from an RSTYPE_ADDRESS64 was passed as an int, > > which corrupts the value. > > > > This is one of the things that prevents 8250_pnp from working > > on HP ia64 boxes. After 8250_pnp works, we will be able to > > remove 8250_acpi.c. > We might always use 'unsigned long'. Do you have a reason for preferring 'unsigned long' over the exact types used in the ACPI resource structures? I thought it was useful to use the exact types, because then whatever conversion needs to happen is all in one place. In the existing code, there's implicit conversion when you call "pnpacpi_parse_allocated_memresource(..., int mem, int len)" and pass u64 values as "mem" and "len". You have to look both at the call site and the called code. And gcc doesn't even complain about this truncation. But I guess it doesn't matter much either way. > Did you have plan to remove other > legacy acpi drivers? No, I didn't -- which ones are you thinking about? Looking at the callers of acpi_bus_register_driver(), I see: arch/ia64/hp/common/sba_iommu.c Probably can't be converted because it needs the ACPI handle to extract a vendor-specific data item from _CRS. drivers/char/hpet.c This probably should be converted to PNP. I'll look into doing this. Then of course, there are a bunch of things in drivers/acpi/ (battery, button, fan, ec, etc). I expect the reason they are in drivers/acpi/ is because they need ACPI-specific functionality, so they probably couldn't be converted to PNP. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 15:20 ` [ACPI] " Bjorn Helgaas @ 2005-08-03 21:16 ` matthieu castet 2005-08-03 21:41 ` Bjorn Helgaas 2005-08-04 0:51 ` Shaohua Li 2005-08-04 0:46 ` Shaohua Li 1 sibling, 2 replies; 14+ messages in thread From: matthieu castet @ 2005-08-03 21:16 UTC (permalink / raw) To: Bjorn Helgaas; +Cc: acpi-devel, Shaohua Li, Adam Belay, linux-kernel Hi, Bjorn Helgaas wrote: > On Tuesday 02 August 2005 7:01 pm, Shaohua Li wrote: > > >>Did you have plan to remove other >>legacy acpi drivers? > > > No, I didn't -- which ones are you thinking about? Looking at > the callers of acpi_bus_register_driver(), I see: looking for METHOD_NAME__CRS is more acurate. > > arch/ia64/hp/common/sba_iommu.c > Probably can't be converted because it needs the > ACPI handle to extract a vendor-specific data > item from _CRS. > > drivers/char/hpet.c > This probably should be converted to PNP. I'll > look into doing this. IIRC, I am not sure that the pnp layer was able to pass the 64 bits memory adress for hpet correctly. But it would be nice if it works. There are drivers/acpi/motherboard.c that done some stuff already handle by pnp/system.c. There was an extention of a floppy driver in order to use acpi in -mm, but it seems to have been dropped. > > Then of course, there are a bunch of things in drivers/acpi/ > (battery, button, fan, ec, etc). I expect the reason they are > in drivers/acpi/ is because they need ACPI-specific functionality, > so they probably couldn't be converted to PNP. yes. Matthieu PS : I saw in acpi ols paper that you plan once all dupe acpi drivers will be removed to register again the pnp device in acpi layer. Do you plan to add more check and for example add only device that have a CRS in pnp layer ? PPS : is there any plan to integrate http://marc.theaimsgroup.com/?l=linux-kernel&m=111827568001255&w=2 that seem to fix some init problem ? ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 21:16 ` matthieu castet @ 2005-08-03 21:41 ` Bjorn Helgaas 2005-08-04 12:38 ` matthieu castet 2005-08-04 0:51 ` Shaohua Li 1 sibling, 1 reply; 14+ messages in thread From: Bjorn Helgaas @ 2005-08-03 21:41 UTC (permalink / raw) To: matthieu castet; +Cc: acpi-devel, Shaohua Li, Adam Belay, linux-kernel On Wednesday 03 August 2005 3:16 pm, matthieu castet wrote: > Bjorn Helgaas wrote: > > On Tuesday 02 August 2005 7:01 pm, Shaohua Li wrote: > >>Did you have plan to remove other > >>legacy acpi drivers? > > No, I didn't -- which ones are you thinking about? Looking at > > the callers of acpi_bus_register_driver(), I see: > looking for METHOD_NAME__CRS is more acurate. I didn't see any new ones when I looked for METHOD_NAME__CRS. > > drivers/char/hpet.c > > This probably should be converted to PNP. I'll > > look into doing this. > IIRC, I am not sure that the pnp layer was able to pass the 64 bits > memory adress for hpet correctly. But it would be nice if it works. You're right, this was broken. But I've been pushing a PNPACPI patch to fix this. > There was an extention of a floppy driver in order to use acpi in -mm, > but it seems to have been dropped. Yeah, I did that, and it was a huge mistake. The point was to avoid blind probing for the device, but my concern was for ia64, and no ia64 boxes have floppy, so it's much easier to just not build the driver. > PS : I saw in acpi ols paper that you plan once all dupe acpi drivers > will be removed to register again the pnp device in acpi layer. Do you > plan to add more check and for example add only device that have a CRS > in pnp layer ? If you mean the last paragraph of section 6, I don't really understand it. But it mentions 8250_acpi.c as an obstacle, and I do know that we are very close to being able to remove that. I've already posted two patches (one to PNPACPI to fix the 64-bit address problem, and one to 8250_pnp to add support for MMIO UARTs). Once those are accepted, we should be able to remove 8250_acpi.c. I think only ia64 really relies on it anyway. > PPS : is there any plan to integrate > http://marc.theaimsgroup.com/?l=linux-kernel&m=111827568001255&w=2 I'm afraid I don't know anything about this one. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 21:41 ` Bjorn Helgaas @ 2005-08-04 12:38 ` matthieu castet 2005-08-04 15:57 ` Bjorn Helgaas 0 siblings, 1 reply; 14+ messages in thread From: matthieu castet @ 2005-08-04 12:38 UTC (permalink / raw) To: Bjorn Helgaas; +Cc: acpi-devel, Shaohua Li, Adam Belay, linux-kernel Hi, Bjorn Helgaas wrote: > On Wednesday 03 August 2005 3:16 pm, matthieu castet wrote: > >>Bjorn Helgaas wrote: >> > drivers/char/hpet.c >> > This probably should be converted to PNP. I'll >> > look into doing this. >>IIRC, I am not sure that the pnp layer was able to pass the 64 bits >>memory adress for hpet correctly. But it would be nice if it works. > > > You're right, this was broken. But I've been pushing a PNPACPI > patch to fix this. > > Yes but is ACPI_RSTYPE_ADDRESS64 possible on 32 bit machine ? In this case your patch won't work as res->mem_resource[i].start and res->mem_resource[i].end are unsigned long, and 64 bit value won't fit. Matthieu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-04 12:38 ` matthieu castet @ 2005-08-04 15:57 ` Bjorn Helgaas 2005-08-04 16:08 ` matthieu castet 0 siblings, 1 reply; 14+ messages in thread From: Bjorn Helgaas @ 2005-08-04 15:57 UTC (permalink / raw) To: matthieu castet; +Cc: acpi-devel, Shaohua Li, Adam Belay, linux-kernel On Thursday 04 August 2005 6:38 am, matthieu castet wrote: > Bjorn Helgaas wrote: > > On Wednesday 03 August 2005 3:16 pm, matthieu castet wrote: > >>Bjorn Helgaas wrote: > >> > drivers/char/hpet.c > >> > This probably should be converted to PNP. I'll > >> > look into doing this. > >>IIRC, I am not sure that the pnp layer was able to pass the 64 bits > >>memory adress for hpet correctly. But it would be nice if it works. > > > > You're right, this was broken. But I've been pushing a PNPACPI > > patch to fix this. > > > Yes but is ACPI_RSTYPE_ADDRESS64 possible on 32 bit machine ? I can't think of a case where that would make sense, but I don't actually know the answer. > In this case your patch won't work as res->mem_resource[i].start and > res->mem_resource[i].end are unsigned long, and 64 bit value won't fit. True. But fixing that would be pretty far-reaching (changing struct resource), so I'm not worried until it is shown to be a problem. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-04 15:57 ` Bjorn Helgaas @ 2005-08-04 16:08 ` matthieu castet 0 siblings, 0 replies; 14+ messages in thread From: matthieu castet @ 2005-08-04 16:08 UTC (permalink / raw) To: Bjorn Helgaas; +Cc: acpi-devel, Shaohua Li, Adam Belay, linux-kernel Bjorn Helgaas wrote: > On Thursday 04 August 2005 6:38 am, matthieu castet wrote: > >>Bjorn Helgaas wrote: >> >>>On Wednesday 03 August 2005 3:16 pm, matthieu castet wrote: >>> >>>>Bjorn Helgaas wrote: >>>> >>>>> drivers/char/hpet.c >>>>> This probably should be converted to PNP. I'll >>>>> look into doing this. >>>> >>>>IIRC, I am not sure that the pnp layer was able to pass the 64 bits >>>>memory adress for hpet correctly. But it would be nice if it works. >>> >>>You're right, this was broken. But I've been pushing a PNPACPI >>>patch to fix this. >>> >> >>Yes but is ACPI_RSTYPE_ADDRESS64 possible on 32 bit machine ? > > > I can't think of a case where that would make sense, but I don't > actually know the answer. > > >>In this case your patch won't work as res->mem_resource[i].start and >>res->mem_resource[i].end are unsigned long, and 64 bit value won't fit. > > > True. But fixing that would be pretty far-reaching (changing struct > resource), so I'm not worried until it is shown to be a problem. > Ok, may be you could add a BUG_ON(sizeof(long)==4) for ACPI_RSTYPE_ADDRESS64. Matthieu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 21:16 ` matthieu castet 2005-08-03 21:41 ` Bjorn Helgaas @ 2005-08-04 0:51 ` Shaohua Li 2005-08-28 17:40 ` matthieu castet 1 sibling, 1 reply; 14+ messages in thread From: Shaohua Li @ 2005-08-04 0:51 UTC (permalink / raw) To: matthieu castet; +Cc: Bjorn Helgaas, acpi-devel, Adam Belay, linux-kernel On Wed, 2005-08-03 at 23:16 +0200, matthieu castet wrote: > > There are drivers/acpi/motherboard.c that done some stuff already handle > by pnp/system.c. Yes, it should be disabled if pnpacpi is enabled. The only concern is motherboard.c also request some ACPI resources, which might not declaim in ACPI motherboard device, but it's completely BIOS dependent. We might could try remove it at -mm tree to see if it breaks any system later. > > PS : I saw in acpi ols paper that you plan once all dupe acpi drivers > will be removed to register again the pnp device in acpi layer. Do you > plan to add more check and for example add only device that have a CRS > in pnp layer ? For detecting PNP device? it's worthy trying. Thanks, Shaohua ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-04 0:51 ` Shaohua Li @ 2005-08-28 17:40 ` matthieu castet 0 siblings, 0 replies; 14+ messages in thread From: matthieu castet @ 2005-08-28 17:40 UTC (permalink / raw) To: Shaohua Li; +Cc: Bjorn Helgaas, acpi-devel, Adam Belay, linux-kernel Hi, Shaohua Li wrote: > On Wed, 2005-08-03 at 23:16 +0200, matthieu castet wrote: > >>There are drivers/acpi/motherboard.c that done some stuff already handle >>by pnp/system.c. > > Yes, it should be disabled if pnpacpi is enabled. But even if pnpacpi is disabled, pnp/system.c sould work with pnpbios. > The only concern is > motherboard.c also request some ACPI resources, which might not declaim > in ACPI motherboard device, but it's completely BIOS dependent. We might > could try remove it at -mm tree to see if it breaks any system later. > > Ok, may be we should split in 2 modules : the one that request some ACPI resources and the other that use PNP resource. >>PS : I saw in acpi ols paper that you plan once all dupe acpi drivers >>will be removed to register again the pnp device in acpi layer. Do you >>plan to add more check and for example add only device that have a CRS >>in pnp layer ? > > For detecting PNP device? it's worthy trying. > I will send a patch for that. Matthieu ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] Re: [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 15:20 ` [ACPI] " Bjorn Helgaas 2005-08-03 21:16 ` matthieu castet @ 2005-08-04 0:46 ` Shaohua Li 1 sibling, 0 replies; 14+ messages in thread From: Shaohua Li @ 2005-08-04 0:46 UTC (permalink / raw) To: Bjorn Helgaas; +Cc: acpi-devel, Adam Belay, Matthieu Castet, linux-kernel On Wed, 2005-08-03 at 09:20 -0600, Bjorn Helgaas wrote: > On Tuesday 02 August 2005 7:01 pm, Shaohua Li wrote: > > On Tue, 2005-08-02 at 09:55 -0600, Bjorn Helgaas wrote: > > > Any objections to the patch below? I posted it last Wednesday, > > > but haven't heard anything. Once we have this fix, 8250_pnp > > > should have sufficient functionality that we can get rid of > > > 8250_acpi. > > > > > > Use types that match the ACPI resource structures. Previously > > > the u64 value from an RSTYPE_ADDRESS64 was passed as an int, > > > which corrupts the value. > > > > > > This is one of the things that prevents 8250_pnp from working > > > on HP ia64 boxes. After 8250_pnp works, we will be able to > > > remove 8250_acpi.c. > > We might always use 'unsigned long'. > > Do you have a reason for preferring 'unsigned long' over the > exact types used in the ACPI resource structures? I thought > it was useful to use the exact types, because then whatever > conversion needs to happen is all in one place. > > In the existing code, there's implicit conversion when you > call "pnpacpi_parse_allocated_memresource(..., int mem, int len)" > and pass u64 values as "mem" and "len". You have to look both > at the call site and the called code. And gcc doesn't even > complain about this truncation. > > But I guess it doesn't matter much either way. Either is ok to me. > > > Did you have plan to remove other > > legacy acpi drivers? > > No, I didn't -- which ones are you thinking about? Looking at > the callers of acpi_bus_register_driver(), I see: > > arch/ia64/hp/common/sba_iommu.c > Probably can't be converted because it needs the > ACPI handle to extract a vendor-specific data > item from _CRS. > > drivers/char/hpet.c > This probably should be converted to PNP. I'll > look into doing this. Great! After then we could push the ACPIPNP hotplug staff. Thanks, Shaohua ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-02 15:55 [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] Bjorn Helgaas 2005-08-03 1:01 ` Shaohua Li @ 2005-08-03 1:05 ` Kenji Kaneshige 2005-08-03 18:29 ` Bjorn Helgaas 1 sibling, 1 reply; 14+ messages in thread From: Kenji Kaneshige @ 2005-08-03 1:05 UTC (permalink / raw) To: Bjorn Helgaas Cc: Adam Belay, Matthieu Castet, Li Shaohua, acpi-devel, linux-kernel Hi Bjorn, > static void > -pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, int irq) > +pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, u32 irq) > { > int i = 0; > while (!(res->irq_resource[i].flags & IORESOURCE_UNSET) && > @@ -85,13 +85,13 @@ > res->irq_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->irq_resource[i].start =(unsigned long) irq; > - res->irq_resource[i].end = (unsigned long) irq; > + res->irq_resource[i].start = irq; > + res->irq_resource[i].end = irq; > } > } This breaks the following patch that is already included into -mm tree. http://sourceforge.net/mailarchive/forum.php?thread_id=7844247&forum_id=6102 I think we need to check if acpi_register_gsi() succeeded or not. Thanks, Kenji Kaneshige Bjorn Helgaas wrote: > Any objections to the patch below? I posted it last Wednesday, > but haven't heard anything. Once we have this fix, 8250_pnp > should have sufficient functionality that we can get rid of > 8250_acpi. > > > > Use types that match the ACPI resource structures. Previously > the u64 value from an RSTYPE_ADDRESS64 was passed as an int, > which corrupts the value. > > This is one of the things that prevents 8250_pnp from working > on HP ia64 boxes. After 8250_pnp works, we will be able to > remove 8250_acpi.c. > > Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> > > Index: work/drivers/pnp/pnpacpi/rsparser.c > =================================================================== > --- work.orig/drivers/pnp/pnpacpi/rsparser.c 2005-07-25 15:04:26.000000000 -0600 > +++ work/drivers/pnp/pnpacpi/rsparser.c 2005-07-27 10:02:19.000000000 -0600 > @@ -73,7 +73,7 @@ > } > > static void > -pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, int irq) > +pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, u32 irq) > { > int i = 0; > while (!(res->irq_resource[i].flags & IORESOURCE_UNSET) && > @@ -85,13 +85,13 @@ > res->irq_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->irq_resource[i].start =(unsigned long) irq; > - res->irq_resource[i].end = (unsigned long) irq; > + res->irq_resource[i].start = irq; > + res->irq_resource[i].end = irq; > } > } > > static void > -pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, int dma) > +pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, u32 dma) > { > int i = 0; > while (i < PNP_MAX_DMA && > @@ -103,14 +103,14 @@ > res->dma_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->dma_resource[i].start =(unsigned long) dma; > - res->dma_resource[i].end = (unsigned long) dma; > + res->dma_resource[i].start = dma; > + res->dma_resource[i].end = dma; > } > } > > static void > pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res, > - int io, int len) > + u32 io, u32 len) > { > int i = 0; > while (!(res->port_resource[i].flags & IORESOURCE_UNSET) && > @@ -122,14 +122,14 @@ > res->port_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->port_resource[i].start = (unsigned long) io; > - res->port_resource[i].end = (unsigned long)(io + len - 1); > + res->port_resource[i].start = io; > + res->port_resource[i].end = io + len - 1; > } > } > > static void > pnpacpi_parse_allocated_memresource(struct pnp_resource_table * res, > - int mem, int len) > + u64 mem, u64 len) > { > int i = 0; > while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) && > @@ -141,8 +141,8 @@ > res->mem_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->mem_resource[i].start = (unsigned long) mem; > - res->mem_resource[i].end = (unsigned long)(mem + len - 1); > + res->mem_resource[i].start = mem; > + res->mem_resource[i].end = mem + len - 1; > } > } > > > > ------------------------------------------------------- > SF.Net email is sponsored by: Discover Easy Linux Migration Strategies > from IBM. Find simple to follow Roadmaps, straightforward articles, > informative Webcasts and more! Get everything you need to get up to > speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click > _______________________________________________ > Acpi-devel mailing list > Acpi-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/acpi-devel > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 1:05 ` [ACPI] " Kenji Kaneshige @ 2005-08-03 18:29 ` Bjorn Helgaas 2005-08-04 5:18 ` Kenji Kaneshige 0 siblings, 1 reply; 14+ messages in thread From: Bjorn Helgaas @ 2005-08-03 18:29 UTC (permalink / raw) To: Kenji Kaneshige Cc: Adam Belay, Matthieu Castet, Li Shaohua, acpi-devel, linux-kernel On Tuesday 02 August 2005 7:05 pm, Kenji Kaneshige wrote: > This breaks the following patch that is already included into -mm > tree. > > http://sourceforge.net/mailarchive/forum.php?thread_id=7844247&forum_id=6102 > > I think we need to check if acpi_register_gsi() succeeded or not. You're absolutely right. I was just based off a Linus tree, non -mm, and didn't notice that your patch conflicted. How about the following (based on 2.6.13-rc4-mm1)? I moved the acpi_register_gsi() into pnpacpi_parse_allocated_irqresource(), which I think is nice because the test for failure is right next to the call. PNPACPI: fix types when decoding ACPI resources Use types that match the ACPI resource structures. Previously the u64 value from an RSTYPE_ADDRESS64 was passed as an int, which corrupts the value. This is one of the things that prevents 8250_pnp from working on HP ia64 boxes. After 8250_pnp works, we will be able to remove 8250_acpi.c. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Index: work-mm/drivers/pnp/pnpacpi/rsparser.c =================================================================== --- work-mm.orig/drivers/pnp/pnpacpi/rsparser.c 2005-08-02 09:39:25.000000000 -0600 +++ work-mm/drivers/pnp/pnpacpi/rsparser.c 2005-08-03 09:31:05.000000000 -0600 @@ -73,25 +73,28 @@ } static void -pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, int irq) +pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, u32 gsi, + int edge_level, int active_high_low) { int i = 0; + int irq; while (!(res->irq_resource[i].flags & IORESOURCE_UNSET) && i < PNP_MAX_IRQ) i++; if (i < PNP_MAX_IRQ) { res->irq_resource[i].flags = IORESOURCE_IRQ; //Also clears _UNSET flag + irq = acpi_register_gsi(gsi, edge_level, active_high_low); if (irq < 0) { res->irq_resource[i].flags |= IORESOURCE_DISABLED; return; } - res->irq_resource[i].start =(unsigned long) irq; - res->irq_resource[i].end = (unsigned long) irq; + res->irq_resource[i].start = irq; + res->irq_resource[i].end = irq; } } static void -pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, int dma) +pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, u32 dma) { int i = 0; while (i < PNP_MAX_DMA && @@ -103,14 +106,14 @@ res->dma_resource[i].flags |= IORESOURCE_DISABLED; return; } - res->dma_resource[i].start =(unsigned long) dma; - res->dma_resource[i].end = (unsigned long) dma; + res->dma_resource[i].start = dma; + res->dma_resource[i].end = dma; } } static void pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res, - int io, int len) + u32 io, u32 len) { int i = 0; while (!(res->port_resource[i].flags & IORESOURCE_UNSET) && @@ -122,14 +125,14 @@ res->port_resource[i].flags |= IORESOURCE_DISABLED; return; } - res->port_resource[i].start = (unsigned long) io; - res->port_resource[i].end = (unsigned long)(io + len - 1); + res->port_resource[i].start = io; + res->port_resource[i].end = io + len - 1; } } static void pnpacpi_parse_allocated_memresource(struct pnp_resource_table * res, - int mem, int len) + u64 mem, u64 len) { int i = 0; while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) && @@ -141,8 +144,8 @@ res->mem_resource[i].flags |= IORESOURCE_DISABLED; return; } - res->mem_resource[i].start = (unsigned long) mem; - res->mem_resource[i].end = (unsigned long)(mem + len - 1); + res->mem_resource[i].start = mem; + res->mem_resource[i].end = mem + len - 1; } } @@ -156,10 +159,10 @@ case ACPI_RSTYPE_IRQ: if ((res->data.irq.number_of_interrupts > 0) && valid_IRQ(res->data.irq.interrupts[0])) { - pnpacpi_parse_allocated_irqresource(res_table, - acpi_register_gsi(res->data.irq.interrupts[0], - res->data.irq.edge_level, - res->data.irq.active_high_low)); + pnpacpi_parse_allocated_irqresource(res_table, + res->data.irq.interrupts[0], + res->data.irq.edge_level, + res->data.irq.active_high_low); pcibios_penalize_isa_irq(res->data.irq.interrupts[0], 1); } break; @@ -167,10 +170,10 @@ case ACPI_RSTYPE_EXT_IRQ: if ((res->data.extended_irq.number_of_interrupts > 0) && valid_IRQ(res->data.extended_irq.interrupts[0])) { - pnpacpi_parse_allocated_irqresource(res_table, - acpi_register_gsi(res->data.extended_irq.interrupts[0], - res->data.extended_irq.edge_level, - res->data.extended_irq.active_high_low)); + pnpacpi_parse_allocated_irqresource(res_table, + res->data.extended_irq.interrupts[0], + res->data.extended_irq.edge_level, + res->data.extended_irq.active_high_low); pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0], 1); } break; ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [ACPI] [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] 2005-08-03 18:29 ` Bjorn Helgaas @ 2005-08-04 5:18 ` Kenji Kaneshige 0 siblings, 0 replies; 14+ messages in thread From: Kenji Kaneshige @ 2005-08-04 5:18 UTC (permalink / raw) To: Bjorn Helgaas Cc: Adam Belay, Matthieu Castet, Li Shaohua, acpi-devel, linux-kernel Hi Bjorn, Thank you very much for the new patch and I'm very sorry for troubling you. The patch looks very good to me. Thanks, Kenji Kaneshige Bjorn Helgaas wrote: > On Tuesday 02 August 2005 7:05 pm, Kenji Kaneshige wrote: > >>This breaks the following patch that is already included into -mm >>tree. >> >>http://sourceforge.net/mailarchive/forum.php?thread_id=7844247&forum_id=6102 >> >>I think we need to check if acpi_register_gsi() succeeded or not. > > > You're absolutely right. I was just based off a Linus tree, non -mm, > and didn't notice that your patch conflicted. How about the following > (based on 2.6.13-rc4-mm1)? I moved the acpi_register_gsi() into > pnpacpi_parse_allocated_irqresource(), which I think is nice because > the test for failure is right next to the call. > > > > PNPACPI: fix types when decoding ACPI resources > > Use types that match the ACPI resource structures. Previously > the u64 value from an RSTYPE_ADDRESS64 was passed as an int, > which corrupts the value. > > This is one of the things that prevents 8250_pnp from working > on HP ia64 boxes. After 8250_pnp works, we will be able to > remove 8250_acpi.c. > > Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> > > Index: work-mm/drivers/pnp/pnpacpi/rsparser.c > =================================================================== > --- work-mm.orig/drivers/pnp/pnpacpi/rsparser.c 2005-08-02 09:39:25.000000000 -0600 > +++ work-mm/drivers/pnp/pnpacpi/rsparser.c 2005-08-03 09:31:05.000000000 -0600 > @@ -73,25 +73,28 @@ > } > > static void > -pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, int irq) > +pnpacpi_parse_allocated_irqresource(struct pnp_resource_table * res, u32 gsi, > + int edge_level, int active_high_low) > { > int i = 0; > + int irq; > while (!(res->irq_resource[i].flags & IORESOURCE_UNSET) && > i < PNP_MAX_IRQ) > i++; > if (i < PNP_MAX_IRQ) { > res->irq_resource[i].flags = IORESOURCE_IRQ; //Also clears _UNSET flag > + irq = acpi_register_gsi(gsi, edge_level, active_high_low); > if (irq < 0) { > res->irq_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->irq_resource[i].start =(unsigned long) irq; > - res->irq_resource[i].end = (unsigned long) irq; > + res->irq_resource[i].start = irq; > + res->irq_resource[i].end = irq; > } > } > > static void > -pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, int dma) > +pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table * res, u32 dma) > { > int i = 0; > while (i < PNP_MAX_DMA && > @@ -103,14 +106,14 @@ > res->dma_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->dma_resource[i].start =(unsigned long) dma; > - res->dma_resource[i].end = (unsigned long) dma; > + res->dma_resource[i].start = dma; > + res->dma_resource[i].end = dma; > } > } > > static void > pnpacpi_parse_allocated_ioresource(struct pnp_resource_table * res, > - int io, int len) > + u32 io, u32 len) > { > int i = 0; > while (!(res->port_resource[i].flags & IORESOURCE_UNSET) && > @@ -122,14 +125,14 @@ > res->port_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->port_resource[i].start = (unsigned long) io; > - res->port_resource[i].end = (unsigned long)(io + len - 1); > + res->port_resource[i].start = io; > + res->port_resource[i].end = io + len - 1; > } > } > > static void > pnpacpi_parse_allocated_memresource(struct pnp_resource_table * res, > - int mem, int len) > + u64 mem, u64 len) > { > int i = 0; > while (!(res->mem_resource[i].flags & IORESOURCE_UNSET) && > @@ -141,8 +144,8 @@ > res->mem_resource[i].flags |= IORESOURCE_DISABLED; > return; > } > - res->mem_resource[i].start = (unsigned long) mem; > - res->mem_resource[i].end = (unsigned long)(mem + len - 1); > + res->mem_resource[i].start = mem; > + res->mem_resource[i].end = mem + len - 1; > } > } > > @@ -156,10 +159,10 @@ > case ACPI_RSTYPE_IRQ: > if ((res->data.irq.number_of_interrupts > 0) && > valid_IRQ(res->data.irq.interrupts[0])) { > - pnpacpi_parse_allocated_irqresource(res_table, > - acpi_register_gsi(res->data.irq.interrupts[0], > - res->data.irq.edge_level, > - res->data.irq.active_high_low)); > + pnpacpi_parse_allocated_irqresource(res_table, > + res->data.irq.interrupts[0], > + res->data.irq.edge_level, > + res->data.irq.active_high_low); > pcibios_penalize_isa_irq(res->data.irq.interrupts[0], 1); > } > break; > @@ -167,10 +170,10 @@ > case ACPI_RSTYPE_EXT_IRQ: > if ((res->data.extended_irq.number_of_interrupts > 0) && > valid_IRQ(res->data.extended_irq.interrupts[0])) { > - pnpacpi_parse_allocated_irqresource(res_table, > - acpi_register_gsi(res->data.extended_irq.interrupts[0], > - res->data.extended_irq.edge_level, > - res->data.extended_irq.active_high_low)); > + pnpacpi_parse_allocated_irqresource(res_table, > + res->data.extended_irq.interrupts[0], > + res->data.extended_irq.edge_level, > + res->data.extended_irq.active_high_low); > pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0], 1); > } > break; > ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2005-08-28 17:40 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-08-02 15:55 [PATCH] PNPACPI: fix types when decoding ACPI resources [resend] Bjorn Helgaas 2005-08-03 1:01 ` Shaohua Li 2005-08-03 15:20 ` [ACPI] " Bjorn Helgaas 2005-08-03 21:16 ` matthieu castet 2005-08-03 21:41 ` Bjorn Helgaas 2005-08-04 12:38 ` matthieu castet 2005-08-04 15:57 ` Bjorn Helgaas 2005-08-04 16:08 ` matthieu castet 2005-08-04 0:51 ` Shaohua Li 2005-08-28 17:40 ` matthieu castet 2005-08-04 0:46 ` Shaohua Li 2005-08-03 1:05 ` [ACPI] " Kenji Kaneshige 2005-08-03 18:29 ` Bjorn Helgaas 2005-08-04 5:18 ` Kenji Kaneshige
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox