Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 257561 Details for
Bug 351451
[sata_nv ADMA breaks ATAPI] Crash on mounting DVD-RAM
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Simpler updated patch to fix ATAPI issues with memory >4GB
sata_nv-fix-atapi-issues-over-4gb-v3.patch (text/plain), 2.37 KB, created by
Robert Hancock
on 2007-11-14 01:18:27 UTC
(
hide
)
Description:
Simpler updated patch to fix ATAPI issues with memory >4GB
Filename:
MIME Type:
Creator:
Robert Hancock
Created:
2007-11-14 01:18:27 UTC
Size:
2.37 KB
patch
obsolete
>This fixes some problems with ATAPI devices on nForce4 controllers in ADMA mode >on systems with memory located above 4GB. We need delay setting the 64-bit DMA >mask until the PRD table and padding buffer are allocated so that they don't get >allocated above 4GB and break legacy mode (which is needed for ATAPI devices). > >Signed-off-by: Robert Hancock <hancockr@shaw.ca> > >--- linux-2.6.24-rc1-git10edit/drivers/ata/sata_nv.c.before 2007-11-13 19:04:18.000000000 -0600 >+++ linux-2.6.24-rc1-git10edit/drivers/ata/sata_nv.c 2007-11-13 19:02:34.000000000 -0600 >@@ -247,6 +247,7 @@ > void __iomem *ctl_block; > void __iomem *gen_block; > void __iomem *notifier_clear_block; >+ u64 adma_dma_mask; > u8 flags; > int last_issue_ncq; > }; >@@ -748,7 +749,7 @@ > adma_enable = 0; > nv_adma_register_mode(ap); > } else { >- bounce_limit = *ap->dev->dma_mask; >+ bounce_limit = pp->adma_dma_mask; > segment_boundary = NV_ADMA_DMA_BOUNDARY; > sg_tablesize = NV_ADMA_SGTBL_TOTAL_LEN; > adma_enable = 1; >@@ -763,6 +764,11 @@ > config_mask = NV_MCP_SATA_CFG_20_PORT0_EN | > NV_MCP_SATA_CFG_20_PORT0_PWB_EN; > >+ /* Set appropriate DMA mask. */ >+ rc = pci_set_dma_mask(pdev, bounce_limit); >+ if (rc) >+ return rc; >+ > if (adma_enable) { > new_reg = current_reg | config_mask; > pp->flags &= ~NV_ADMA_ATAPI_SETUP_COMPLETE; >@@ -1134,6 +1140,7 @@ > void *mem; > dma_addr_t mem_dma; > void __iomem *mmio; >+ struct pci_dev *pdev = to_pci_dev(dev); > u16 tmp; > > VPRINTK("ENTER\n"); >@@ -1153,6 +1160,14 @@ > pp->notifier_clear_block = pp->gen_block + > NV_ADMA_NOTIFIER_CLEAR + (4 * ap->port_no); > >+ /* Now that the legacy PRD and padding buffer are allocated we can >+ safely raise the DMA mask to allocate the CPB/APRD table. */ >+ pci_set_dma_mask(pdev, DMA_BIT_MASK(64)); >+ pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); >+ /* Store the mask that was actually used so we can restore it later >+ if needed */ >+ pp->adma_dma_mask = *dev->dma_mask; >+ > mem = dmam_alloc_coherent(dev, NV_ADMA_PORT_PRIV_DMA_SZ, > &mem_dma, GFP_KERNEL); > if (!mem) >@@ -2408,12 +2423,6 @@ > hpriv->type = type; > host->private_data = hpriv; > >- /* set 64bit dma masks, may fail */ >- if (type == ADMA) { >- if (pci_set_dma_mask(pdev, DMA_64BIT_MASK) == 0) >- pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); >- } >- > /* request and iomap NV_MMIO_BAR */ > rc = pcim_iomap_regions(pdev, 1 << NV_MMIO_BAR, DRV_NAME); > if (rc)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 351451
:
237981
|
242451
|
242611
|
246361
|
247451
|
254191
|
255811
|
257561
|
259141
|
263811
|
264021
|
265241
|
265521
|
265601
|
293360
|
293601